У меня есть GUI со многими флажками (на python). пользователи должны нажать много флажков для запуска приложения. Я хочу создать кнопку, которая автоматически выбирает и "нажимает" некоторые предопределенные флажки.
Я знаю, как создать кнопку, а также приложение "знает", что флажок установлен.
однако при просмотре графического интерфейса флажки остаются пустыми, поэтому пользователь не знает, какой флажок установлен. см. ниже определение флажка:
class Ui_Dialog(object):
def setupUi(self, Dialog):
QtCore.QObject.connect(self.legacyrunsens,
QtCore.SIGNAL(_fromUtf8("stateChanged(int)")), legacychecksens)
поэтому я называю legacychecksens(2)
, но в GUI флажок не отмечен.
Решение состоит из подключения clicked
сигнала к setChecked(True)
способа по QCheckBox
через functools.partial()
, в следующей части я показал пример с PySide4
from PyQt4 import QtCore, QtGui
from functools import partial
class Widget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
lay = QtGui.QVBoxLayout(self)
button = QtGui.QPushButton("Default")
lay.addWidget(button)
options = ["A", "B", "C", "D", "E", "F"]
default = ["A", "B", "C"]
for option in options:
checkbox = QtGui.QCheckBox(option)
lay.addWidget(checkbox)
if option in default:
button.clicked.connect(partial(checkbox.setChecked, True))
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())