所以我一直在尝试使用Python 3.3和PyQt4编写一个GUI。我已经完成了一些教程,但我仍然无法弄清楚如何让复选框检查和取消检查全局变量中的触发器更改。我无法让它触发任何与此相关的事情,因为所有教程都使用对我不起作用的方法。
该程序太大,无法整体复制,因此我将围绕复选框的程序的基本结构放在一起
import sys
from PyQt4 import QtGui, QtCore
ILCheck = False
class SelectionWindow(QtGui.QWidget):
def __init__(self, parent=None):
super(SelectionWindow, self).__init__(parent)
ILCheckbox = QtGui.QCheckBox(self)
ILCheckbox.setCheckState(QtCore.Qt.Unchecked)
MainLayout = QtGui.QGridLayout()
MainLayout.addWidget(ILCheckbox, 0, 0, 1, 1)
self.setLayout(MainLayout)
这就是我被困住的地方。我想要做的是,如果选中了 ILCheckbox,则将 ILCheck 的状态更改为 True,如果未选中,则将其更改回 False。我花了一整天的时间来研究这个问题,但所有教程都没有多大帮助。
最佳答案
当其状态更改时,复选框会发出 stateChanged
事件(真的!)。将其连接到事件处理程序:
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class SelectionWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ILCheck = False
ILCheckbox = QCheckBox(self)
ILCheckbox.setCheckState(Qt.Unchecked)
ILCheckbox.stateChanged.connect(self.ILCheckbox_changed)
MainLayout = QGridLayout()
MainLayout.addWidget(ILCheckbox, 0, 0, 1, 1)
self.setLayout(MainLayout)
def ILCheckbox_changed(self, state):
self.ILCheck = (state == Qt.Checked)
print(self.ILCheck)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = SelectionWindow()
window.show()
sys.exit(app.exec_())
关于eclipse - Python3 PyQt4 创建一个简单的 QCheckBox 并更改 bool 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12736825/