def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setWindowTitle("XPD Motor Controls") #Get all the motor names here, essentially load up the motorD toplayout=QtGui.QGridLayout() number_of_motors_ = len(motorD) titles = ['Name', 'Status', 'Position Read Back', 'Position', 'Step', 'Stop'] fields_per_motor = len(titles) i=1 for n, title in enumerate(titles): toplayout.addWidget(QtGui.QLabel(title), 0, n) for motor in motorD: #set the motor name toplayout.addWidget(QtGui.QLabel(motor), i, 0) #How do I get this to update automaticly? Also needs if statement with real words motor_stat = 'MOTOR STATUS HERE' toplayout.addWidget(QtGui.QLabel(motor_stat), i, 1) position_read_back='POSITION VALUE HERE' toplayout.addWidget(QtGui.QLabel(position_read_back), i, 2) #Spin box for setting the position user_position=QtGui.QDoubleSpinBox() user_position.setMaximum(motorD[motor]['high']) user_position.setMinimum(motorD[motor]['low']) #this needs to update user_position.setValue(caget(motorD[motor]['pv']+'.VAL')) user_position.setSuffix(motorD[motor]['EGU']) user_position.valueChanged.connect(lambda y=user_position.value, x=motor : self.new_position) toplayout.addWidget(user_position) #step box step = QtGui.QDoubleSpinBox() step.setMinimum(motorD[motor]['res']) step.setValue(.5) step.valueChanged.connect(user_position.setSingleStep) toplayout.addWidget(step) #stop button stop_btn=QtGui.QPushButton("STOP") stop_btn.clicked.connect(lambda x=motor: self.gui_stop(x)) toplayout.addWidget(stop_btn) i+=1 self.setLayout(toplayout) self.show()
def __init__(self, data, comment="", parent=None): QtGui.QWidget.__init__(self, parent) from copy import deepcopy self.data = deepcopy(data) self.widgets = [] self.formlayout = QtGui.QFormLayout(self) if comment: self.formlayout.addRow(QtGui.QLabel(comment)) self.formlayout.addRow(QtGui.QLabel(" ")) if DEBUG: print("\n" + ("*" * 80)) print("DATA:", self.data) print("*" * 80) print("COMMENT:", comment) print("*" * 80)
def setup(self): for label, value in self.data: if DEBUG: print("value:", value) if label is None and value is None: # Separator: (None, None) self.formlayout.addRow(QtGui.QLabel(" "), QtGui.QLabel(" ")) self.widgets.append(None) continue elif label is None: # Comment self.formlayout.addRow(QtGui.QLabel(value)) self.widgets.append(None) continue elif tuple_to_qfont(value) is not None: field = FontLayout(value, self) elif is_color_like(value): field = ColorLayout(to_qcolor(value), self) elif isinstance(value, six.string_types): field = QtGui.QLineEdit(value, self) elif isinstance(value, (list, tuple)): if isinstance(value, tuple): value = list(value) selindex = value.pop(0) field = QtGui.QComboBox(self) if isinstance(value[0], (list, tuple)): keys = [key for key, _val in value] value = [val for _key, val in value] else: keys = value field.addItems(value) if selindex in value: selindex = value.index(selindex) elif selindex in keys: selindex = keys.index(selindex) elif not isinstance(selindex, int): print("Warning: '%s' index is invalid (label: " \ "%s, value: %s)" % (selindex, label, value), file=STDERR) selindex = 0 field.setCurrentIndex(selindex) elif isinstance(value, bool): field = QtGui.QCheckBox(self) if value: field.setCheckState(QtCore.Qt.Checked) else: field.setCheckState(QtCore.Qt.Unchecked) elif isinstance(value, float): field = QtGui.QLineEdit(repr(value), self) field.setValidator(QtGui.QDoubleValidator(field)) dialog = self.get_dialog() dialog.register_float_field(field) self.connect(field, QtCore.SIGNAL('textChanged(QString)'), lambda text: dialog.update_buttons()) elif isinstance(value, int): field = QtGui.QSpinBox(self) field.setRange(-1e9, 1e9) field.setValue(value) elif isinstance(value, datetime.datetime): field = QtGui.QDateTimeEdit(self) field.setDateTime(value) elif isinstance(value, datetime.date): field = QtGui.QDateEdit(self) field.setDate(value) else: field = QtGui.QLineEdit(repr(value), self) self.formlayout.addRow(label, field) self.widgets.append(field)
def __init__(self, *args, **kwargs): super(UiSubplotTool, self).__init__(*args, **kwargs) self.setObjectName('SubplotTool') self.resize(450, 265) gbox = QtGui.QGridLayout(self) self.setLayout(gbox) # groupbox borders groupbox = QtGui.QGroupBox('Borders', self) gbox.addWidget(groupbox, 6, 0, 1, 1) self.verticalLayout = QtGui.QVBoxLayout(groupbox) self.verticalLayout.setSpacing(0) # slider top self.hboxtop = QtGui.QHBoxLayout() self.labeltop = QtGui.QLabel('top', self) self.labeltop.setMinimumSize(QtCore.QSize(50, 0)) self.labeltop.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.slidertop = QtGui.QSlider(self) self.slidertop.setMouseTracking(False) self.slidertop.setProperty("value", 0) self.slidertop.setOrientation(QtCore.Qt.Horizontal) self.slidertop.setInvertedAppearance(False) self.slidertop.setInvertedControls(False) self.slidertop.setTickPosition(QtGui.QSlider.TicksAbove) self.slidertop.setTickInterval(100) self.topvalue = QtGui.QLabel('0', self) self.topvalue.setMinimumSize(QtCore.QSize(30, 0)) self.topvalue.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.verticalLayout.addLayout(self.hboxtop) self.hboxtop.addWidget(self.labeltop) self.hboxtop.addWidget(self.slidertop) self.hboxtop.addWidget(self.topvalue) # slider bottom hboxbottom = QtGui.QHBoxLayout() labelbottom = QtGui.QLabel('bottom', self) labelbottom.setMinimumSize(QtCore.QSize(50, 0)) labelbottom.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.sliderbottom = QtGui.QSlider(self) self.sliderbottom.setMouseTracking(False) self.sliderbottom.setProperty("value", 0) self.sliderbottom.setOrientation(QtCore.Qt.Horizontal) self.sliderbottom.setInvertedAppearance(False) self.sliderbottom.setInvertedControls(False) self.sliderbottom.setTickPosition(QtGui.QSlider.TicksAbove) self.sliderbottom.setTickInterval(100) self.bottomvalue = QtGui.QLabel('0', self) self.bottomvalue.setMinimumSize(QtCore.QSize(30, 0)) self.bottomvalue.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.verticalLayout.addLayout(hboxbottom) hboxbottom.addWidget(labelbottom) hboxbottom.addWidget(self.sliderbottom) hboxbottom.addWidget(self.bottomvalue) # slider left hboxleft = QtGui.QHBoxLayout() labelleft = QtGui.QLabel('left', self) labelleft.setMinimumSize(QtCore.QSize(50, 0)) labelleft.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.sliderleft = QtGui.QSlider(self) self.sliderleft.setMouseTracking(False) self.sliderleft.setProperty("value", 0) self.sliderleft.setOrientation(QtCore.Qt.Horizontal) self.sliderleft.setInvertedAppearance(False) self.sliderleft.setInvertedControls(False) self.sliderleft.setTickPosition(QtGui.QSlider.TicksAbove) self.sliderleft.setTickInterval(100) self.leftvalue = QtGui.QLabel('0', self) self.leftvalue.setMinimumSize(QtCore.QSize(30, 0)) self.leftvalue.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.verticalLayout.addLayout(hboxleft) hboxleft.addWidget(labelleft) hboxleft.addWidget(self.sliderleft) hboxleft.addWidget(self.leftvalue) # slider right hboxright = QtGui.QHBoxLayout() self.labelright = QtGui.QLabel('right', self) self.labelright.setMinimumSize(QtCore.QSize(50, 0)) self.labelright.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.sliderright = QtGui.QSlider(self) self.sliderright.setMouseTracking(False) self.sliderright.setProperty("value", 0) self.sliderright.setOrientation(QtCore.Qt.Horizontal) self.sliderright.setInvertedAppearance(False) self.sliderright.setInvertedControls(False) self.sliderright.setTickPosition(QtGui.QSlider.TicksAbove) self.sliderright.setTickInterval(100) self.rightvalue = QtGui.QLabel('0', self) self.rightvalue.setMinimumSize(QtCore.QSize(30, 0)) self.rightvalue.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.verticalLayout.addLayout(hboxright) hboxright.addWidget(self.labelright) hboxright.addWidget(self.sliderright) hboxright.addWidget(self.rightvalue) # groupbox spacings groupbox = QtGui.QGroupBox('Spacings', self) gbox.addWidget(groupbox, 7, 0, 1, 1) self.verticalLayout = QtGui.QVBoxLayout(groupbox) self.verticalLayout.setSpacing(0) # slider hspace hboxhspace = QtGui.QHBoxLayout() self.labelhspace = QtGui.QLabel('hspace', self) self.labelhspace.setMinimumSize(QtCore.QSize(50, 0)) self.labelhspace.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.sliderhspace = QtGui.QSlider(self) self.sliderhspace.setMouseTracking(False) self.sliderhspace.setProperty("value", 0) self.sliderhspace.setOrientation(QtCore.Qt.Horizontal) self.sliderhspace.setInvertedAppearance(False) self.sliderhspace.setInvertedControls(False) self.sliderhspace.setTickPosition(QtGui.QSlider.TicksAbove) self.sliderhspace.setTickInterval(100) self.hspacevalue = QtGui.QLabel('0', self) self.hspacevalue.setMinimumSize(QtCore.QSize(30, 0)) self.hspacevalue.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.verticalLayout.addLayout(hboxhspace) hboxhspace.addWidget(self.labelhspace) hboxhspace.addWidget(self.sliderhspace) hboxhspace.addWidget(self.hspacevalue) # slider hspace # slider wspace hboxwspace = QtGui.QHBoxLayout() self.labelwspace = QtGui.QLabel('wspace', self) self.labelwspace.setMinimumSize(QtCore.QSize(50, 0)) self.labelwspace.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.sliderwspace = QtGui.QSlider(self) self.sliderwspace.setMouseTracking(False) self.sliderwspace.setProperty("value", 0) self.sliderwspace.setOrientation(QtCore.Qt.Horizontal) self.sliderwspace.setInvertedAppearance(False) self.sliderwspace.setInvertedControls(False) self.sliderwspace.setTickPosition(QtGui.QSlider.TicksAbove) self.sliderwspace.setTickInterval(100) self.wspacevalue = QtGui.QLabel('0', self) self.wspacevalue.setMinimumSize(QtCore.QSize(30, 0)) self.wspacevalue.setAlignment( QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.verticalLayout.addLayout(hboxwspace) hboxwspace.addWidget(self.labelwspace) hboxwspace.addWidget(self.sliderwspace) hboxwspace.addWidget(self.wspacevalue) # button bar hbox2 = QtGui.QHBoxLayout() gbox.addLayout(hbox2, 8, 0, 1, 1) self.tightlayout = QtGui.QPushButton('Tight Layout', self) spacer = QtGui.QSpacerItem( 5, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.resetbutton = QtGui.QPushButton('Reset', self) self.donebutton = QtGui.QPushButton('Close', self) self.donebutton.setFocus(True) hbox2.addWidget(self.tightlayout) hbox2.addItem(spacer) hbox2.addWidget(self.resetbutton) hbox2.addWidget(self.donebutton) self.donebutton.clicked.connect(self.accept)