def __init__(self, parent, title, text, entries): self.entries = entries super().__init__(parent) vbox = QtWidgets.QVBoxLayout() sa = QtWidgets.QScrollArea() salo = QtWidgets.QVBoxLayout() frame = QtWidgets.QFrame() frame.setLayout(salo) self.buttons = [] for entry in entries: hbox = QtWidgets.QHBoxLayout() cb = QtWidgets.QCheckBox(entry[0]) self.buttons.append(cb) if entry[1]: cb.setCheckState(QtCore.Qt.Checked) hbox.addWidget(cb) salo.addLayout(hbox) sa.setWidget(frame) vbox.addWidget(sa) hbox = QtWidgets.QHBoxLayout() ok = QtWidgets.QPushButton("Ok") cancel = QtWidgets.QPushButton("Cancel") ok.clicked.connect(self.writeBack) cancel.clicked.connect(self.reject) # QtCore.QObject.connect(ok, QtCore.SIGNAL('clicked(bool)'), self.writeBack) # QtCore.QObject.connect(cancel, QtCore.SIGNAL('clicked(bool)'), self.reject) hbox.addWidget(ok) hbox.addWidget(cancel) vbox.addLayout(hbox) self.setLayout(vbox)
def _add_checkbox(self, text, state_changed, tooltip, checked=True, enabled=True, button_label=True): """ _add_checkbox - helper to add a checkbox :param str text: Text for label :param function state_changed: callback for state_changed signal :param bool checked: initially checked? :param bool enabled: initially enabled? :param bool button_label: label should be a button for single shot use :return: QCheckBox """ cbox = QtWidgets.QCheckBox('' if button_label else text, self) self.control.layout().addWidget(cbox) btn = None if button_label: btn = QtWidgets.QPushButton(text, self) self.control.layout().addWidget(btn) def cb(checked, cbox=cbox, state_changed=state_changed): state_changed(cbox.isChecked(), one_shot=True) btn.clicked.connect(cb) btn.setToolTip(tooltip) cbox.setChecked(checked) cbox.setEnabled(enabled) cbox.stateChanged.connect(state_changed) cbox.setToolTip(tooltip) self.control.layout().addItem(QtWidgets.QSpacerItem(20, 0)) return cbox