def setupButtons(self, yaml_file):
     """
     Parse yaml file and setup Buttons. Format of the yaml file should be:
     - name: 'button name' (required)
       image: 'path to image for icon' (optional)
       image_size: 'width and height of icon' (optional)
       command: 'command' (required)
       column: 'column index' (optional, defaults to 0)
     """
     self.buttons = []
     with open(yaml_file) as f:
         yaml_data = yaml.load(f)
         # lookup colum direction
         direction = 'vertical'
         for d in yaml_data:
             if d.has_key('direction'):
                 if d['direction'] == 'horizontal':
                     direction = 'horizontal'
                 else: # d['direction'] == 'vertical':
                     direction = 'vertical'
                 yaml_data.remove(d)
                 break
         # lookup column num
         column_indices = [d['column'] for d in yaml_data]
         max_column_index = max(*column_indices)
         if direction == 'vertical':
             self.layout = QtWidgets.QHBoxLayout()
             self.layout_boxes = [QtWidgets.QVBoxLayout()
                                  for i in range(max_column_index + 1)]
         else: # direction == 'horizontal'
             self.layout = QtWidgets.QVBoxLayout()
             self.layout_boxes = [QtWidgets.QHBoxLayout()
                                  for i in range(max_column_index + 1)]
         self.button_groups = [QtWidgets.QGroupBox()
                              for i in range(max_column_index + 1)]
         for button_data in yaml_data:
             # check if all the field is available
             if not button_data.has_key("name"):
                 self.showError("name field is missed in yaml")
                 raise Exception("name field is missed in yaml")
             if not button_data.has_key("command"):
                 self.showError("command field is missed in yaml")
                 raise Exception("command field is missed in yaml")
             if self.button_type == "push":
                 button = QtWidgets.QToolButton()
             else: # self.button_type == "Radio":
                 button = QtWidgets.QRadioButton()
             button.setSizePolicy(QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred))
             if button_data.has_key("image"):
                 image_file = get_filename(button_data["image"])[len("file://"):]
                 if os.path.exists(image_file):
                     icon = QtGui.QIcon(image_file)
                     button.setIcon(icon)
                     if button_data.has_key("image_size"):
                         button.setIconSize(QSize(button_data["image_size"][0], button_data["image_size"][1]))
                     else:
                         button.setIconSize(QSize(100, 100))
             if button_data.has_key("name"):
                 name = button_data['name']
                 button.setText(name)
             button.clicked.connect(self.buttonCallback(button_data['command']))
             if self.button_type == "push":
                 button.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
             else: # self.button_type == "Radio":
                 if button_data.has_key("default_value") and button_data['default_value']:
                     button.setChecked(True)
             self.layout_boxes[button_data['column']].addWidget(button)
             self.buttons.append(button)
         for i in range(len(self.button_groups)):
             self.button_groups[i].setLayout(self.layout_boxes[i])
         for group in self.button_groups:
             self.layout.addWidget(group)
         self.setLayout(self.layout)
示例#2
0
 def __create_radio_button(self, text, parameter):
     radio = QtWidgets.QRadioButton(text)
     radio.parameter = parameter
     return radio
    def setupUi(self, MainWindow):
###############################################################################################
        self.lock = Lock()
        self.talker = Talker('gui')
        rospy.Subscriber('bbBackup',bbBackup,self.backupFunction)   
        rospy.Subscriber('clicked_point',PointStamped,self.clickedPintRviz)
###############################################################################################


        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(560, 440)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gBnewTask = QtWidgets.QGroupBox(self.centralwidget)
        self.gBnewTask.setGeometry(QtCore.QRect(10, 60, 541, 291))
        self.gBnewTask.setObjectName("gBnewTask")
        self.gBc = QtWidgets.QGroupBox(self.gBnewTask)
        self.gBc.setEnabled(False)
        self.gBc.setGeometry(QtCore.QRect(420, 80, 111, 151))
        self.gBc.setObjectName("gBc")
        self.label_29 = QtWidgets.QLabel(self.gBc)
        self.label_29.setGeometry(QtCore.QRect(10, 30, 16, 21))
        self.label_29.setObjectName("label_29")
        self.label_30 = QtWidgets.QLabel(self.gBc)
        self.label_30.setGeometry(QtCore.QRect(10, 90, 21, 21))
        self.label_30.setObjectName("label_30")
        self.label_31 = QtWidgets.QLabel(self.gBc)
        self.label_31.setGeometry(QtCore.QRect(10, 60, 16, 21))
        self.label_31.setObjectName("label_31")
        self.cx = QtWidgets.QDoubleSpinBox(self.gBc)
        self.cx.setGeometry(QtCore.QRect(30, 30, 69, 26))
        self.cx.setObjectName("cx")
        self.cx.setRange(-100.0,100.0)
        self.cy = QtWidgets.QDoubleSpinBox(self.gBc)
        self.cy.setGeometry(QtCore.QRect(30, 60, 69, 26))
        self.cy.setObjectName("cy")
        self.cy.setRange(-100.0,100.0)
        self.cz = QtWidgets.QDoubleSpinBox(self.gBc)
        self.cz.setGeometry(QtCore.QRect(30, 90, 69, 26))
        self.cz.setObjectName("cz")
        self.cz.setRange(-100.0,100.0)
        self.cw = QtWidgets.QDoubleSpinBox(self.gBc)
        self.cw.setGeometry(QtCore.QRect(30, 120, 69, 26))
        self.cw.setObjectName("cw")
        self.cw.setRange(-100.0,100.0)
        self.label_39 = QtWidgets.QLabel(self.gBc)
        self.label_39.setGeometry(QtCore.QRect(10, 120, 21, 21))
        self.label_39.setObjectName("label_39")
        self.gBb = QtWidgets.QGroupBox(self.gBnewTask)
        self.gBb.setEnabled(False)
        self.gBb.setGeometry(QtCore.QRect(300, 80, 111, 151))
        self.gBb.setObjectName("gBb")
        self.label_40 = QtWidgets.QLabel(self.gBb)
        self.label_40.setGeometry(QtCore.QRect(10, 30, 16, 21))
        self.label_40.setObjectName("label_40")
        self.label_41 = QtWidgets.QLabel(self.gBb)
        self.label_41.setGeometry(QtCore.QRect(10, 90, 21, 21))
        self.label_41.setObjectName("label_41")
        self.label_42 = QtWidgets.QLabel(self.gBb)
        self.label_42.setGeometry(QtCore.QRect(10, 60, 16, 21))
        self.label_42.setObjectName("label_42")
        self.bx = QtWidgets.QDoubleSpinBox(self.gBb)
        self.bx.setGeometry(QtCore.QRect(30, 30, 69, 26))
        self.bx.setObjectName("bx")
        self.bx.setRange(-100.0,100.0)
        self.by = QtWidgets.QDoubleSpinBox(self.gBb)
        self.by.setGeometry(QtCore.QRect(30, 60, 69, 26))
        self.by.setObjectName("by")
        self.by.setRange(-100.0,100.0)
        self.bz = QtWidgets.QDoubleSpinBox(self.gBb)
        self.bz.setGeometry(QtCore.QRect(30, 90, 69, 26))
        self.bz.setObjectName("bz")
        self.bz.setRange(-100.0,100.0)
        self.bw = QtWidgets.QDoubleSpinBox(self.gBb)
        self.bw.setGeometry(QtCore.QRect(30, 120, 69, 26))
        self.bw.setObjectName("bw")
        self.bw.setRange(-100.0,100.0)
        self.label_43 = QtWidgets.QLabel(self.gBb)
        self.label_43.setGeometry(QtCore.QRect(10, 120, 21, 21))
        self.label_43.setObjectName("label_43")
        self.gBtaskType = QtWidgets.QGroupBox(self.gBnewTask)
        self.gBtaskType.setGeometry(QtCore.QRect(10, 80, 161, 151))
        self.gBtaskType.setObjectName("gBtaskType")
        self.radioButton = QtWidgets.QRadioButton(self.gBtaskType)
        self.radioButton.setEnabled(True)
        self.radioButton.setGeometry(QtCore.QRect(10, 30, 131, 23))
        self.radioButton.setChecked(True)
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtWidgets.QRadioButton(self.gBtaskType)
        self.radioButton_2.setGeometry(QtCore.QRect(10, 60, 101, 23))
        self.radioButton_2.setObjectName("radioButton_2")
        self.radioButton_3 = QtWidgets.QRadioButton(self.gBtaskType)
        self.radioButton_3.setGeometry(QtCore.QRect(10, 90, 131, 23))
        self.radioButton_3.setObjectName("radioButton_3")
        self.radioButton_4 = QtWidgets.QRadioButton(self.gBtaskType)
        self.radioButton_4.setGeometry(QtCore.QRect(10, 120, 141, 23))
        self.radioButton_4.setObjectName("radioButton_4")
        self.gBa = QtWidgets.QGroupBox(self.gBnewTask)
        self.gBa.setEnabled(True)
        self.gBa.setGeometry(QtCore.QRect(180, 80, 111, 151))
        self.gBa.setObjectName("gBa")
        self.label_25 = QtWidgets.QLabel(self.gBa)
        self.label_25.setGeometry(QtCore.QRect(10, 30, 16, 21))
        self.label_25.setObjectName("label_25")
        self.label_26 = QtWidgets.QLabel(self.gBa)
        self.label_26.setGeometry(QtCore.QRect(10, 90, 21, 21))
        self.label_26.setObjectName("label_26")
        self.label_27 = QtWidgets.QLabel(self.gBa)
        self.label_27.setGeometry(QtCore.QRect(10, 60, 16, 21))
        self.label_27.setObjectName("label_27")
        self.ax = QtWidgets.QDoubleSpinBox(self.gBa)
        self.ax.setGeometry(QtCore.QRect(30, 30, 69, 26))
        self.ax.setObjectName("ax")
        self.ax.setRange(-100.0,100.0)
        self.ay = QtWidgets.QDoubleSpinBox(self.gBa)
        self.ay.setGeometry(QtCore.QRect(30, 60, 69, 26))
        self.ay.setObjectName("ay")
        self.ay.setRange(-100.0,100.0)
        self.az = QtWidgets.QDoubleSpinBox(self.gBa)
        self.az.setGeometry(QtCore.QRect(30, 90, 69, 26))
        self.az.setObjectName("az")
        self.az.setRange(-100.0,100.0)
        self.aw = QtWidgets.QDoubleSpinBox(self.gBa)
        self.aw.setGeometry(QtCore.QRect(30, 120, 69, 26))
        self.aw.setObjectName("aw")
        self.aw.setRange(-100.0,100.0)
        self.label_28 = QtWidgets.QLabel(self.gBa)
        self.label_28.setGeometry(QtCore.QRect(10, 120, 21, 21))
        self.label_28.setObjectName("label_28")
        self.btnAddTask = QtWidgets.QPushButton(self.gBnewTask)
        self.btnAddTask.setEnabled(True)
        self.btnAddTask.setGeometry(QtCore.QRect(10, 240, 521, 31))
        self.btnAddTask.setObjectName("btnAddTask")
        self.widget = QtWidgets.QWidget(self.gBnewTask)
        self.widget.setGeometry(QtCore.QRect(10, 30, 521, 28))
        self.widget.setObjectName("widget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label_3 = QtWidgets.QLabel(self.widget)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout.addWidget(self.label_3)
        self.sBtaskid = QtWidgets.QSpinBox(self.widget)
        self.sBtaskid.setObjectName("sBtaskid")
        self.horizontalLayout.addWidget(self.sBtaskid)
        self.label_4 = QtWidgets.QLabel(self.widget)
        self.label_4.setObjectName("label_4")
        self.horizontalLayout.addWidget(self.label_4)
        self.sbtaskPriority = QtWidgets.QSpinBox(self.widget)
        self.sbtaskPriority.setObjectName("sbtaskPriority")
        self.horizontalLayout.addWidget(self.sbtaskPriority)
        self.label_5 = QtWidgets.QLabel(self.widget)
        self.label_5.setObjectName("label_5")
        self.horizontalLayout.addWidget(self.label_5)
        self.sbtaskPayload = QtWidgets.QSpinBox(self.widget)
        self.sbtaskPayload.setObjectName("sbtaskPayload")
        self.horizontalLayout.addWidget(self.sbtaskPayload)
        self.gBrobotState = QtWidgets.QGroupBox(self.centralwidget)
        self.gBrobotState.setGeometry(QtCore.QRect(10, 360, 541, 71))
        self.gBrobotState.setObjectName("gBrobotState")
        self.sBrobotId = QtWidgets.QSpinBox(self.gBrobotState)
        self.sBrobotId.setGeometry(QtCore.QRect(80, 30, 48, 31))
        self.sBrobotId.setObjectName("sBrobotId")
        self.radioButton_5 = QtWidgets.QRadioButton(self.gBrobotState)
        self.radioButton_5.setGeometry(QtCore.QRect(140, 32, 61, 31))
        self.radioButton_5.setChecked(True)
        self.radioButton_5.setObjectName("radioButton_5")
        self.radioButton_6 = QtWidgets.QRadioButton(self.gBrobotState)
        self.radioButton_6.setGeometry(QtCore.QRect(280, 32, 71, 31))
        self.radioButton_6.setObjectName("radioButton_6")
        self.radioButton_7 = QtWidgets.QRadioButton(self.gBrobotState)
        self.radioButton_7.setGeometry(QtCore.QRect(210, 32, 51, 31))
        self.radioButton_7.setObjectName("radioButton_7")
        self.btnsetRobotState = QtWidgets.QPushButton(self.gBrobotState)
        self.btnsetRobotState.setEnabled(True)
        self.btnsetRobotState.setGeometry(QtCore.QRect(380, 30, 151, 31))
        self.btnsetRobotState.setObjectName("btnsetRobotState")
        self.label_32 = QtWidgets.QLabel(self.gBrobotState)
        self.label_32.setGeometry(QtCore.QRect(10, 30, 81, 31))
        self.label_32.setObjectName("label_32")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10, 20, 81, 17))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(300, 20, 141, 17))
        self.label_2.setObjectName("label_2")
        self.lblblackBoard = QtWidgets.QLabel(self.centralwidget)
        self.lblblackBoard.setGeometry(QtCore.QRect(100, 20, 141, 17))
        font = QtGui.QFont()
        font.setItalic(True)
        self.lblblackBoard.setFont(font)
        self.lblblackBoard.setObjectName("lblblackBoard")
        self.lblbackupBlackboard = QtWidgets.QLabel(self.centralwidget)
        self.lblbackupBlackboard.setGeometry(QtCore.QRect(450, 20, 91, 17))
        font = QtGui.QFont()
        font.setItalic(True)
        self.lblbackupBlackboard.setFont(font)
        self.lblbackupBlackboard.setObjectName("lblbackupBlackboard")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.currentpint = 1