Organizando Widgets

Ajuste del tamaño y la posición del Widget

Llame «withSize» y «withPosition» para fijar el tamaño y la posición del Widget en la pestaña.

withSize establece el número de columnas de ancho y las filas de alto que el Widget debe ser. Por ejemplo, llamar «withSize» (1, 1) hace que el Widget ocupe una sola celda en la red. Tenga en cuenta que algunos Widgets tienen un tamaño mínimo que puede ser mayor que el tamaño especificado, en cuyo caso el Widget usará el tamaño más pequeño soportado.

withPosition establece la fila y la columna de la esquina superior izquierda del Widget. Tanto las filas como las columnas están indexadas con el 0, por lo que la fila superior es el número 0 y la columna más a la izquierda también es el número 0. Si se especifica la posición de cualquier Widget en una pestaña, cada Widget también debería tener su posición establecida para evitar que se superpongan.

Shuffleboard.getTab("Pre-round")
  .add("Auto Mode", autoModeChooser)
  .withSize(2, 1) // make the widget 2x1
  .withPosition(0, 0); // place it in the top-left corner
frc::Shuffleboard::GetTab("Pre-round")
  .Add("Auto Mode", autoModeChooser)
  .WithSize(2, 1)
  .WithPosition(0,0);
from wpilib.shuffleboard import Shuffleboard

(Shuffleboard.getTab("Pre-round")
  .add("Auto Mode", autoModeChooser)
  .withSize(2, 1) # make the widget 2x1
  .withPosition(0, 0)) # place it in the top-left corner

Adición de Widgets a los diseños

Si hay muchos widgets en una pestaña con datos relacionados, puede ser útil colocarlos en subgrupos más pequeños en lugar de perderlos en la pestaña. De forma muy parecida a como se recupera el manejo de una pestaña con Shuffleboard.getTab, un diseño dentro de una pestaña (o incluso en otro diseño) puede ser recuperado con ShuffleboardTab.getLayout.

ShuffleboardLayout elevatorCommands = Shuffleboard.getTab("Commands")
  .getLayout("Elevator", BuiltInLayouts.kList)
  .withSize(2, 2)
  .withProperties(Map.of("Label position", "HIDDEN")); // hide labels for commands

elevatorCommands.add(new ElevatorDownCommand());
elevatorCommands.add(new ElevatorUpCommand());
wpi::StringMap<std::shared_ptr<nt::Value>> properties{
  std::make_pair("Label position", nt::Value::MakeString("HIDDEN"))
};

frc::ShuffleboardLayout& elevatorCommands = frc::Shuffleboard::GetTab("Commands")
  .GetLayout("Elevator", frc::BuiltInLayouts::kList)
  .WithSize(2, 2)
  .WithProperties(properties);

ElevatorDownCommand* elevatorDown = new ElevatorDownCommand();
ElevatorUpCommand* elevatorUp = new ElevatorUpCommand();

elevatorCommands.Add("Elevator Down", elevatorDown);
elevatorCommands.Add("Elevator Up", elevatorUp);
from wpilib.shuffleboard import Shuffleboard
from wpilib.shuffleboard import BuiltInLayouts

(elevatorCommands = Shuffleboard.getTab("Commands")
  .getLayout("Elevator", BuiltInLayouts.kList)
  .withSize(2, 2)
  .withProperties(map("Label position", "HIDDEN"))) # hide labels for commands

elevatorCommands.add(ElevatorDownCommand())
elevatorCommands.add(ElevatorUpCommand())
Commands buttons organized by the order they are added for the Elevator and Claw subsystems.