def __init__(self): QtGui.QWidget.__init__(self) self._status = "unknown" self._layout = QtGui.QGridLayout(self) self._widgets = dict() self.__logging_cb_signal.connect(self.logging_cb) self.__start_logging_signal.connect(self.start_logging) self.__stop_logging_signal.connect(self.stop_logging) self._add_widget("pid_label", QtGui.QLabel("PID:", self)) self._add_widget("pid", QtGui.QLineEdit(self)) self._widgets["pid"].setMaximumWidth(50) self._add_widget("label_status", QtGui.QLabel(self)) self._widgets["label_status"].setText("Status: Unknown") self._widgets["label_status"].setTextFormat(QtCore.Qt.RichText) self._add_widget("button_start", QtGui.QPushButton("START", self)) self._add_widget("button_stop", QtGui.QPushButton("STOP", self)) self._widgets["button_start"].clicked.connect( self.__start_logging_signal.emit) self._widgets["button_stop"].clicked.connect( self.__stop_logging_signal.emit) self._widgets["label_warning"] = QtGui.QLabel(self) self._layout.addWidget(self._widgets["label_warning"], 1, 0, 1, 2) self._widgets["label_warning"].setTextFormat(QtCore.Qt.RichText) rospy.Subscriber("/data_logger/status", String, self.__logging_cb_signal.emit) self._logging_start = rospy.ServiceProxy('/data_logger/start', DataLoggerStart) self._logging_stop = rospy.ServiceProxy('/data_logger/stop', DataLoggerStop)
def __init__(self, context): super(PbDGUI, self).__init__(context) self.setObjectName('PbDGUI') self._widget = QWidget() self.speech_cmd_publisher = rospy.Publisher('recognized_command', Command) self.gui_cmd_publisher = rospy.Publisher('gui_command', GuiCommand) rospy.Subscriber('experiment_state', ExperimentState, self.exp_state_cb) rospy.Subscriber('robotsound', SoundRequest, self.robotSoundReceived) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.exp_state_sig.connect(self.update_state) self.commands = dict() self.commands[Command.TEST_MICROPHONE] = 'Test microphone' self.commands[Command.NEW_DEMONSTRATION] = 'New demonstration' self.commands[Command.START_RECORDING] = 'Start recording' self.commands[Command.STOP_RECORDING] = 'Stop recording' self.commands[Command.REPLAY_DEMONSTRATION] = 'Replay demonstration' self.commands[Command.DETECT_SURFACE] = 'Detect surface' self.commands[Command.TAKE_TOOL] = 'Take tool' self.commands[Command.RELEASE_TOOL] = 'Release tool' self.commands[Command.SAVE_ARM_POSE] = 'Save arm pose' self.currentAction = -1 self.currentStep = -1 allWidgetsBox = QtGui.QVBoxLayout() actionBox = QGroupBox('Demonstrations', self._widget) self.actionGrid = QtGui.QGridLayout() self.actionGrid.setHorizontalSpacing(0) for i in range(6): self.actionGrid.addItem(QtGui.QSpacerItem(90, 90), 0, i, QtCore.Qt.AlignCenter) self.actionGrid.setColumnStretch(i, 0) self.actionIcons = dict() actionBoxLayout = QtGui.QHBoxLayout() actionBoxLayout.addLayout(self.actionGrid) actionBox.setLayout(actionBoxLayout) actionButtonGrid = QtGui.QHBoxLayout() actionButtonGrid.addWidget( self.create_button(Command.NEW_DEMONSTRATION)) self.stepsBox = QGroupBox('No demonstrations', self._widget) self.stepsGrid = QtGui.QGridLayout() self.l_model = QtGui.QStandardItemModel(self) self.l_view = self._create_table_view(self.l_model, self.l_row_clicked_cb) self.r_model = QtGui.QStandardItemModel(self) self.r_view = self._create_table_view(self.r_model, self.r_row_clicked_cb) self.stepsGrid.addItem(QtGui.QSpacerItem(280, 10), 0, 0, 2, 3) self.stepsGrid.addItem(QtGui.QSpacerItem(10, 10), 0, 1, 2, 3) self.stepsGrid.addItem(QtGui.QSpacerItem(280, 10), 0, 2, 2, 3) self.stepsGrid.addWidget(QtGui.QLabel('Left Arm'), 0, 0) self.stepsGrid.addWidget(QtGui.QLabel('Right Arm'), 0, 2) self.stepsGrid.addWidget(self.l_view, 1, 0) self.stepsGrid.addWidget(self.r_view, 1, 2) stepsBoxLayout = QtGui.QHBoxLayout() stepsBoxLayout.addLayout(self.stepsGrid) self.stepsBox.setLayout(stepsBoxLayout) stepsButtonGrid = QtGui.QHBoxLayout() stepsButtonGrid.addWidget( self.create_button(Command.REPLAY_DEMONSTRATION)) motionButtonGrid = QtGui.QHBoxLayout() motionButtonGrid.addWidget(self.create_button(Command.START_RECORDING)) motionButtonGrid.addWidget(self.create_button(Command.STOP_RECORDING)) misc_grid = QtGui.QHBoxLayout() misc_grid.addWidget(self.create_button(Command.TEST_MICROPHONE)) misc_grid.addWidget(self.create_button(Command.DETECT_SURFACE)) misc_grid.addStretch(1) misc_grid2 = QtGui.QHBoxLayout() misc_grid2.addWidget(self.create_button(Command.TAKE_TOOL)) misc_grid2.addWidget(self.create_button(Command.RELEASE_TOOL)) misc_grid2.addStretch(1) misc_grid3 = QtGui.QHBoxLayout() misc_grid3.addWidget(self.create_button(Command.SAVE_ARM_POSE)) misc_grid3.addStretch(1) speechGroupBox = QGroupBox('Robot Speech', self._widget) speechGroupBox.setObjectName('RobotSpeechGroup') speechBox = QtGui.QHBoxLayout() self.speechLabel = QtGui.QLabel('Robot has not spoken yet') palette = QtGui.QPalette() palette.setColor(QtGui.QPalette.Foreground, QtCore.Qt.blue) self.speechLabel.setPalette(palette) speechBox.addWidget(self.speechLabel) speechGroupBox.setLayout(speechBox) allWidgetsBox.addWidget(actionBox) allWidgetsBox.addLayout(actionButtonGrid) allWidgetsBox.addWidget(self.stepsBox) allWidgetsBox.addLayout(motionButtonGrid) allWidgetsBox.addLayout(stepsButtonGrid) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid2) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 40)) allWidgetsBox.addLayout(misc_grid3) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addWidget(speechGroupBox) allWidgetsBox.addStretch(1) # Fix layout and add main widget to the user interface QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('plastique')) vAllBox = QtGui.QVBoxLayout() vAllBox.addLayout(allWidgetsBox) vAllBox.addStretch(1) hAllBox = QtGui.QHBoxLayout() hAllBox.addLayout(vAllBox) hAllBox.addStretch(1) self._widget.setObjectName('PbDGUI') self._widget.setLayout(hAllBox) context.add_widget(self._widget) rospy.loginfo('Will wait for the experiment state service...') rospy.wait_for_service('get_experiment_state') exp_state_srv = rospy.ServiceProxy('get_experiment_state', GetExperimentState) rospy.loginfo('Got response from the experiment state service...') response = exp_state_srv() self.update_state(response.state)
def __init__(self, context): super(PbDGUI, self).__init__(context) self.setObjectName('PbDGUI') self._widget = QWidget() self.speech_cmd_publisher = rospy.Publisher('recognized_command', Command) self.gui_cmd_publisher = rospy.Publisher('gui_command', GuiCommand) rospy.Subscriber('experiment_state', ExperimentState, self.exp_state_cb) rospy.Subscriber('robotsound', SoundRequest, self.robotSoundReceived) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.exp_state_sig.connect(self.update_state) self.commands = dict() self.commands[Command.CREATE_NEW_ACTION] = 'New action' self.commands[Command.TEST_MICROPHONE] = 'Test microphone' self.commands[Command.NEXT_ACTION] = 'Next action' self.commands[Command.PREV_ACTION] = 'Previous action' self.commands[Command.SAVE_POSE] = 'Save pose' self.commands[Command.RELAX_RIGHT_ARM] = 'Relax right arm' self.commands[Command.RELAX_LEFT_ARM] = 'Relax left arm' self.commands[Command.FREEZE_RIGHT_ARM] = 'Freeze right arm' self.commands[Command.FREEZE_LEFT_ARM] = 'Freeze left arm' self.commands[Command.OPEN_RIGHT_HAND] = 'Open right hand' self.commands[Command.OPEN_LEFT_HAND] = 'Open left hand' self.commands[Command.CLOSE_RIGHT_HAND] = 'Close right hand' self.commands[Command.CLOSE_LEFT_HAND] = 'Close left hand' self.commands[Command.CLOSE_LEFT_HAND] = 'Close left hand' self.commands[Command.EXECUTE_ACTION] = 'Execute action' self.commands[Command.STOP_EXECUTION] = 'Stop execution' self.commands[Command.DELETE_ALL_STEPS] = 'Delete all' self.commands[Command.DELETE_LAST_STEP] = 'Delete last' self.commands[Command.RECORD_OBJECT_POSE] = 'Record object poses' self.currentAction = -1 self.currentStep = -1 allWidgetsBox = QtGui.QVBoxLayout() actionBox = QGroupBox('Actions', self._widget) self.actionGrid = QtGui.QGridLayout() self.actionGrid.setHorizontalSpacing(0) for i in range(6): self.actionGrid.addItem(QtGui.QSpacerItem(90, 90), 0, i, QtCore.Qt.AlignCenter) self.actionGrid.setColumnStretch(i, 0) self.actionIcons = dict() actionBoxLayout = QtGui.QHBoxLayout() actionBoxLayout.addLayout(self.actionGrid) actionBox.setLayout(actionBoxLayout) actionButtonGrid = QtGui.QHBoxLayout() actionButtonGrid.addWidget( self.create_button(Command.CREATE_NEW_ACTION)) self.stepsBox = QGroupBox('No actions created yet', self._widget) self.stepsGrid = QtGui.QGridLayout() self.l_model = QtGui.QStandardItemModel(self) self.l_view = self._create_table_view(self.l_model, self.l_row_clicked_cb) self.r_model = QtGui.QStandardItemModel(self) self.r_view = self._create_table_view(self.r_model, self.r_row_clicked_cb) self.stepsGrid.addItem(QtGui.QSpacerItem(280, 10), 0, 0, 2, 3) self.stepsGrid.addItem(QtGui.QSpacerItem(10, 10), 0, 1, 2, 3) self.stepsGrid.addItem(QtGui.QSpacerItem(280, 10), 0, 2, 2, 3) self.stepsGrid.addWidget(QtGui.QLabel('Left Arm'), 0, 0) self.stepsGrid.addWidget(QtGui.QLabel('Right Arm'), 0, 2) self.stepsGrid.addWidget(self.l_view, 1, 0) self.stepsGrid.addWidget(self.r_view, 1, 2) stepsBoxLayout = QtGui.QHBoxLayout() stepsBoxLayout.addLayout(self.stepsGrid) self.stepsBox.setLayout(stepsBoxLayout) stepsButtonGrid = QtGui.QHBoxLayout() stepsButtonGrid.addWidget(self.create_button(Command.SAVE_POSE)) stepsButtonGrid.addWidget(self.create_button(Command.EXECUTE_ACTION)) stepsButtonGrid.addWidget(self.create_button(Command.STOP_EXECUTION)) stepsButtonGrid.addWidget(self.create_button(Command.DELETE_ALL_STEPS)) stepsButtonGrid.addWidget(self.create_button(Command.DELETE_LAST_STEP)) misc_grid = QtGui.QHBoxLayout() misc_grid.addWidget(self.create_button(Command.TEST_MICROPHONE)) misc_grid.addWidget(self.create_button(Command.RECORD_OBJECT_POSE)) misc_grid.addStretch(1) misc_grid2 = QtGui.QHBoxLayout() misc_grid2.addWidget(self.create_button(Command.RELAX_RIGHT_ARM)) misc_grid2.addWidget(self.create_button(Command.RELAX_LEFT_ARM)) misc_grid2.addWidget(self.create_button(Command.FREEZE_RIGHT_ARM)) misc_grid2.addWidget(self.create_button(Command.FREEZE_LEFT_ARM)) misc_grid2.addStretch(1) misc_grid3 = QtGui.QHBoxLayout() misc_grid3.addWidget(self.create_button(Command.OPEN_RIGHT_HAND)) misc_grid3.addWidget(self.create_button(Command.OPEN_LEFT_HAND)) misc_grid3.addWidget(self.create_button(Command.CLOSE_RIGHT_HAND)) misc_grid3.addWidget(self.create_button(Command.CLOSE_LEFT_HAND)) misc_grid3.addStretch(1) misc_grid4 = QtGui.QHBoxLayout() misc_grid4.addWidget(self.create_button(Command.PREV_ACTION)) misc_grid4.addWidget(self.create_button(Command.NEXT_ACTION)) misc_grid4.addStretch(1) speechGroupBox = QGroupBox('Robot Speech', self._widget) speechGroupBox.setObjectName('RobotSpeechGroup') speechBox = QtGui.QHBoxLayout() self.speechLabel = QtGui.QLabel('Robot has not spoken yet') palette = QtGui.QPalette() palette.setColor(QtGui.QPalette.Foreground, QtCore.Qt.blue) self.speechLabel.setPalette(palette) speechBox.addWidget(self.speechLabel) speechGroupBox.setLayout(speechBox) allWidgetsBox.addWidget(actionBox) allWidgetsBox.addLayout(actionButtonGrid) allWidgetsBox.addWidget(self.stepsBox) allWidgetsBox.addLayout(stepsButtonGrid) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid2) allWidgetsBox.addLayout(misc_grid3) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid4) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addWidget(speechGroupBox) allWidgetsBox.addStretch(1) # Fix layout and add main widget to the user interface QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('plastique')) vAllBox = QtGui.QVBoxLayout() vAllBox.addLayout(allWidgetsBox) vAllBox.addStretch(1) hAllBox = QtGui.QHBoxLayout() hAllBox.addLayout(vAllBox) hAllBox.addStretch(1) self._widget.setObjectName('PbDGUI') self._widget.setLayout(hAllBox) context.add_widget(self._widget) rospy.loginfo('Will wait for the experiment state service...') rospy.wait_for_service('get_experiment_state') exp_state_srv = rospy.ServiceProxy('get_experiment_state', GetExperimentState) rospy.loginfo('Got response from the experiment state service...') response = exp_state_srv() self.update_state(response.state)
def __init__(self, grammar_filename=None): """ Constructor """ super(ContinueGui, self).__init__() self.resize(640, 480) self.move(300, 300) self.setWindowTitle('Continue GUI') # Add the description box self.description_label = QtGui.QLabel(self) self.description_label.setMaximumHeight(100) # Add the question box self.spec_label = QtGui.QLabel(self) self.spec_label.setMaximumHeight(100) # Add the key box self.key_label = QtGui.QLabel(self) self.key_label.setMaximumHeight(100) # Add the texteditbox self.textbox = QtGui.QTextEdit(self) self.textbox.textChanged.connect(self._text_changed) # Add the submit button self.submit_button = QtGui.QPushButton(self) self.submit_button.setText("Submit") self.submit_button.setEnabled(False) # Add the clear button self.clear_button = QtGui.QPushButton(self) self.clear_button.setText("Clear") # Submit/clear button layout self.submit_clear_button_layout = QtGui.QVBoxLayout() self.submit_clear_button_layout.addWidget(self.submit_button) self.submit_clear_button_layout.addWidget(self.clear_button) self.submit_clear_button_widget = QtGui.QWidget() self.submit_clear_button_widget.setLayout(self.submit_clear_button_layout) # Add the QButtonGroup # self.option_buttons = QtGui.QButtonGroup(self) (ToDo: how can I do this nicely???) # self.button_layout = QtGui.QVBoxLayout() self.button_layout = QtGui.QGridLayout() self.button_widget = QtGui.QWidget() self.button_widget.setLayout(self.button_layout) self.button_widget.setSizePolicy(2, 2) # Makes sure we don't get enormous buttons # Top layout self._top_layout = QtGui.QHBoxLayout(self) self._top_layout.addWidget(self.textbox) self._top_layout.addWidget(self.submit_clear_button_widget) self._top_widget = QtGui.QWidget() self._top_widget.setLayout(self._top_layout) self._top_widget.setMaximumHeight(100) # Main layout self._main_layout = QtGui.QVBoxLayout(self) self._main_layout.addWidget(self.description_label) self._main_layout.addWidget(self.spec_label) self._main_layout.addWidget(self.key_label) self._main_layout.addWidget(self._top_widget) # self._main_layout.addWidget(self.option_buttons) self._main_layout.addWidget(self.button_widget) self._main_layout.insertStretch(-1, 0) # List with ButtonCBs self._button_cbs = [] # Setup the interface self.server_interface = HMIServerGUIInterface('continui', grammar_filename) # Update thread self.update_thread = UpdateThread(self, self.server_interface) self.update_thread.buttons.connect(self.buttons_callback) self.update_thread.description.connect(self.description_callback) self.update_thread.spec.connect(self.spec_callback) self.update_thread.key.connect(self.key_callback) self.update_thread.valid.connect(self.valid_callback) self.current_text.connect(self.update_thread.set_text) self.submit_button.clicked.connect(self.update_thread.submit) self.submit_button.clicked.connect(self.clear_text) self.clear_button.clicked.connect(self.clear_text) self.update_thread.start() self.show()
def init_ui(self): # type combobox ui_type_lable = QtGui.QLabel('Robot') ui_type_lable.setStyleSheet('QLabel {font: bold}') ui_type_lable.setMaximumWidth(70) # ui_type_lable.setFont(QtGui.QFont(QtGui.QFont.Bold)) ui_type_lable.setAlignment(QtCore.Qt.AlignCenter) self.ui_type = QtGui.QComboBox() self.ui_type.addItem('MTMR') self.ui_type.addItem('MTML') self.ui_type.addItem('PSM1') self.ui_type.addItem('PSM2') self.ui_type.addItem('PSM3') # self.ui_type.addItem('ECM') ui_hbox_type = QtGui.QHBoxLayout() ui_hbox_type.addWidget(ui_type_lable) ui_hbox_type.addWidget(self.ui_type) self.ui_type.currentIndexChanged.connect(self.slot_type_changed) # control mode # todo: use a for loop gbox = QtGui.QGridLayout() ui_btn_idle = QtGui.QPushButton('Idle') ui_btn_idle.setCheckable(True) ui_btn_idle.setChecked(True) gbox.addWidget(ui_btn_idle, 0, 0) ui_btn_idle.clicked[bool].connect(self.slot_btn_idle) ui_btn_home = QtGui.QPushButton('Home') ui_btn_home.setCheckable(True) gbox.addWidget(ui_btn_home, 0, 1) ui_btn_home.clicked[bool].connect(self.slot_btn_home) ui_btn_grav = QtGui.QPushButton('Gravity') ui_btn_grav.setCheckable(True) gbox.addWidget(ui_btn_grav, 1, 0) ui_btn_grav.clicked[bool].connect(self.slot_btn_grav) ui_btn_vfix = QtGui.QPushButton('Teleop') ui_btn_vfix.setCheckable(True) gbox.addWidget(ui_btn_vfix, 1, 1) ui_btn_vfix.clicked[bool].connect(self.slot_btn_teleop) ui_btn_group = QtGui.QButtonGroup(self._widget) ui_btn_group.addButton(ui_btn_idle) ui_btn_group.addButton(ui_btn_home) ui_btn_group.addButton(ui_btn_grav) ui_btn_group.addButton(ui_btn_vfix) ui_btn_group.setExclusive(True) # connect here self.ui_gbox_control = QtGui.QGroupBox('Control MTM') self.ui_gbox_control.setLayout(gbox) # ---- PSM Control Box ---- gbox = QtGui.QGridLayout() ui_btn_idle = QtGui.QPushButton('Idle') ui_btn_idle.setCheckable(True) ui_btn_idle.setChecked(True) gbox.addWidget(ui_btn_idle, 0, 0) ui_btn_idle.clicked[bool].connect(self.slot_btn_idle) ui_btn_home = QtGui.QPushButton('Home') ui_btn_home.setCheckable(True) gbox.addWidget(ui_btn_home, 0, 1) ui_btn_home.clicked[bool].connect(self.slot_btn_home) ui_btn_grav = QtGui.QPushButton('Teleop') ui_btn_grav.setCheckable(True) gbox.addWidget(ui_btn_grav, 1, 0) ui_btn_grav.clicked[bool].connect(self.slot_btn_teleop) ui_btn_vfix = QtGui.QPushButton('Manual') ui_btn_vfix.setCheckable(True) gbox.addWidget(ui_btn_vfix, 1, 1) ui_btn_vfix.clicked[bool].connect(self.slot_btn_manual) ui_btn_group = QtGui.QButtonGroup(self._widget) ui_btn_group.addButton(ui_btn_idle) ui_btn_group.addButton(ui_btn_home) ui_btn_group.addButton(ui_btn_grav) ui_btn_group.addButton(ui_btn_vfix) ui_btn_group.setExclusive(True) # connect here self.ui_gbox_control_psm = QtGui.QGroupBox('Control PSM') self.ui_gbox_control_psm.setLayout(gbox) self.ui_gbox_control_psm.setVisible(False) # ---- gripper box ----- ui_hbox_gripper = QtGui.QHBoxLayout() ui_gripper_label = QtGui.QLabel('Gripper Angle:') ui_hbox_gripper.addWidget(ui_gripper_label) ui_gbox_gripper = QtGui.QGroupBox('Gripper') ui_gbox_gripper.setLayout(ui_hbox_gripper) # ---- joint position group ----- jnt_pos_hbox = QtGui.QHBoxLayout() jp_widgets = [] jn_widgets = [] for i in range(7): pos_vbox = QtGui.QVBoxLayout() ui_ppos = QwtThermo() ui_ppos.setScalePosition(QwtThermo.NoScale) ui_ppos.setAutoFillBackground(True) ui_ppos.setAlarmLevel(0.8) ui_ppos.setPipeWidth(20) ui_ppos.setValue(0.0) ui_ppos.setMinimumSize(0, 40) ui_ppos.setRange(0.0, 1.0, False) ui_npos = QwtThermo() ui_npos.setScalePosition(QwtThermo.NoScale) ui_npos.setAlarmLevel(0.8) ui_npos.setPipeWidth(20) ui_npos.setValue(0.9) ui_npos.setMinimumSize(0, 40) ui_npos.setRange(1.0, 0.0, False) ui_npos.setValue(0.0) ui_label_jnt = QtGui.QLabel('J' + str(i)) pos_vbox.addWidget(ui_ppos) pos_vbox.addWidget(ui_npos) pos_vbox.addWidget(ui_label_jnt) jnt_pos_hbox.addLayout(pos_vbox) jp_widgets.append(ui_ppos) jn_widgets.append(ui_npos) # ui_btn_jnt_pos = QPushButton('J1') ui_gbox_jnt_pos = QtGui.QGroupBox('Joint Positions (normalized)') ui_gbox_jnt_pos.setLayout(jnt_pos_hbox) self.joint_widgets = zip(jp_widgets, jn_widgets) # joint torque group jnt_eff_hbox = QtGui.QHBoxLayout() tp_widgets = [] tn_widgets = [] for i in range(7): eff_vbox = QtGui.QVBoxLayout() ui_peff = QwtThermo() ui_peff.setScalePosition(QwtThermo.NoScale) ui_peff.setAutoFillBackground(True) ui_peff.setAlarmLevel(0.8) ui_peff.setPipeWidth(20) ui_peff.setValue(0.0) ui_peff.setMinimumSize(0, 30) ui_peff.setRange(0.0, 1.0, False) ui_neff = QwtThermo() ui_neff.setScalePosition(QwtThermo.NoScale) ui_neff.setAlarmLevel(0.8) ui_neff.setPipeWidth(20) ui_neff.setValue(0.9) ui_neff.setMinimumSize(0, 30) ui_neff.setRange(1.0, 0.0, False) ui_neff.setValue(0.0) ui_label_jnt = QtGui.QLabel('J' + str(i)) eff_vbox.addWidget(ui_peff) eff_vbox.addWidget(ui_neff) eff_vbox.addWidget(ui_label_jnt) jnt_eff_hbox.addLayout(eff_vbox) tp_widgets.append(ui_peff) tn_widgets.append(ui_neff) ui_gbox_jnt_eff = QtGui.QGroupBox('Joint Torques (normalized)') ui_gbox_jnt_eff.setLayout(jnt_eff_hbox) self.torque_widgets = zip(tp_widgets, tn_widgets) # make widgets colorful self.dvrk_green = QColor(87, 186, 142) self.dvrk_green_dark = self.dvrk_green.darker() self.dvrk_green_light = self.dvrk_green.lighter() self.dvrk_blue = QColor(80, 148, 204) self.dvrk_blue_dark = self.dvrk_blue.darker() self.dvrk_blue_light = self.dvrk_blue.lighter() self.dvrk_red = QColor(232, 47, 47) self.dvrk_red_dark = self.dvrk_red.darker() self.dvrk_red_light = self.dvrk_red.lighter() self.dvrk_orange = QColor(255, 103, 43) self.dvrk_orange_dark = self.dvrk_orange.darker() # joint_bg_color = self.dvrk_blue_dark.darker() joint_fill_color = self.dvrk_blue joint_alarm_color = self.dvrk_blue_light # self.dvrk_blue_light # torque_bg_color = self.dvrk_green_dark.darker() torque_fill_color = self.dvrk_green torque_alarm_color = self.dvrk_orange # self.dvrk_green_light for w in jp_widgets + jn_widgets: w.setAlarmLevel(0.80) w.setFillColor(joint_fill_color) w.setAlarmColor(joint_alarm_color) p = w.palette() # p.setColor(ui_ppos.backgroundRole(), joint_bg_color) w.setPalette(p) for w in tp_widgets + tn_widgets: w.setAlarmLevel(0.66) w.setFillColor(torque_fill_color) w.setAlarmColor(torque_alarm_color) p = w.palette() # p.setColor(ui_peff.backgroundRole(), torque_bg_color) w.setPalette(p) # main layout main_layout = QtGui.QVBoxLayout() main_layout.addLayout(ui_hbox_type) main_layout.addWidget(self.ui_gbox_control) main_layout.addWidget(self.ui_gbox_control_psm) main_layout.addWidget(ui_gbox_gripper) main_layout.addWidget(ui_gbox_jnt_pos) main_layout.addWidget(ui_gbox_jnt_eff) self._widget.setLayout(main_layout) pass