def __init__(self, def_pixmap=None, parent=None): QtWidgets.QWidget.__init__(self, parent) self.signals = self.Signals() self.pre = "NLineCrossingVideoWidget : " self.lay = QtWidgets.QVBoxLayout(self) self.canvas = NLineCrossingCanvasWidget(self.signals, def_pixmap, parent=self) self.lay.addWidget(self.canvas) # WARNING: the numerical constants are reversed between min/max...! self.canvas.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) self.buttons = QtWidgets.QWidget(self) self.lay.addWidget(self.buttons) self.button1 = QtWidgets.QPushButton("Set 1", self.buttons) self.linedef1 = QtWidgets.QSpinBox(self.buttons) self.cbutton1 = QtWidgets.QPushButton("Clear 1", self.buttons) self.button2 = QtWidgets.QPushButton("Set 2", self.buttons) self.linedef2 = QtWidgets.QSpinBox(self.buttons) self.cbutton2 = QtWidgets.QPushButton("Clear 2", self.buttons) self.label1 = QtWidgets.QLabel("Min object size:") self.sizedef = QtWidgets.QSpinBox(self.buttons) self.linedef1.setRange(4, 60) self.linedef2.setRange(4, 60) self.sizedef.setRange(0, 200 * 200) self.sizedef.setValue(50 * 100) # a nice predefined value self.sizedef.setSingleStep(500) for b in [ self.buttons, self.button1, self.linedef1, self.button2, self.linedef2 ]: b.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) self.button_lay = QtWidgets.QHBoxLayout(self.buttons) self.button_lay.addWidget(self.button1) self.button_lay.addWidget(self.cbutton1) self.button_lay.addWidget(self.linedef1) self.button_lay.addWidget(self.button2) self.button_lay.addWidget(self.cbutton2) self.button_lay.addWidget(self.linedef2) self.button_lay.addWidget(self.label1) self.button_lay.addWidget(self.sizedef) self.button1.clicked.connect(lambda: self.canvas.define_line_slot(0)) self.button2.clicked.connect(lambda: self.canvas.define_line_slot(1)) self.cbutton1.clicked.connect(lambda: self.canvas.clear_line_slot(0)) self.cbutton2.clicked.connect(lambda: self.canvas.clear_line_slot(1)) self.linedef1.valueChanged.connect( lambda i: self.canvas.set_line_width_slot(0, i)) self.linedef2.valueChanged.connect( lambda i: self.canvas.set_line_width_slot(1, i)) self.sizedef.valueChanged.connect(self.canvas.set_object_size_slot)
def __init__(self, ip, slot=1, max_slot=32, parent=None): """ ip corresponds to slot max ip = ip + (max_slot - slot) """ super().__init__(parent) self.setWindowTitle("Configuration Copy") self.max_dn = max_slot - slot assert(isinstance(slot, int)) ip_nums=[] for part in ip.split("."): ip_nums.append(int(part)) self.start_ip_text = ip self.min_num = ip_nums.pop(-1) # take the last number self.max_num = self.min_num + self.max_dn self.min_slot = slot self.stop_ip_text ="" for part in ip_nums: self.stop_ip_text += str(part)+"." self.lay = QtWidgets.QVBoxLayout(self) self.field = QtWidgets.QWidget(self) self.buttons = QtWidgets.QWidget(self) self.lay.addWidget(self.field) self.lay.addWidget(self.buttons) self.field_lay = QtWidgets.QGridLayout(self.field) self.buttons_lay = QtWidgets.QHBoxLayout(self.buttons) self.ip_label = QtWidgets.QLabel("IP range", self.field) self.slot_label = QtWidgets.QLabel("Slot range", self.field) self.field_lay.addWidget(self.ip_label, 0, 0) self.field_lay.addWidget(self.slot_label, 1, 0) self.ip_field = QtWidgets.QWidget(self.field) self.slot_field = QtWidgets.QWidget(self.field) self.field_lay.addWidget(self.ip_field, 0, 1) self.field_lay.addWidget(self.slot_field, 1, 1) self.write_button = QtWidgets.QPushButton("Overwrite slots", self.buttons) self.cancel_button = QtWidgets.QPushButton("Cancel", self.buttons) # self.buttons_lay.addWidget(self.write_button, 2, 0) # self.buttons_lay.addWidget(self.cancel_button, 3, 0) self.buttons_lay.addWidget(self.write_button) self.buttons_lay.addWidget(self.cancel_button) self.ip_field_lay = QtWidgets.QHBoxLayout(self.ip_field) self.slot_field_lay = QtWidgets.QHBoxLayout(self.slot_field) self.ip_field_label = QtWidgets.QLabel( self.start_ip_text + " - " + self.stop_ip_text) self.ip_field_input = QtWidgets.QSpinBox(self.ip_field) self.ip_field_lay.addWidget(self.ip_field_label) self.ip_field_lay.addWidget(self.ip_field_input) self.ip_field_input.setMinimum(self.min_num) self.ip_field_input.setMaximum(self.max_num) self.slot_field_label = QtWidgets.QLabel(self.slot_field) self.slot_field_lay.addWidget(self.slot_field_label) self.ip_field_input.valueChanged.connect(self.update_ip_slot) self.write_button.clicked.connect(lambda: self.done(1)) self.cancel_button.clicked.connect(lambda: self.done(0)) self.update_ip_slot(self.min_num)