如何在PyQt中检查复选框是否被选中

34

我正在尝试根据复选框是否被选中来制作一个条件语句。我尝试了类似以下的代码,但它总是返回true。

self.folderactive = QtGui.QCheckBox(self.folders)
self.folderactive.setGeometry(QtCore.QRect(50, 390, 71, 21))
self.folderactive.setObjectName(_fromUtf8("folderactive"))
if self.folderactive.isChecked:
    folders.createDir('Desktop')
    print "pass"
elif not self.folderactive.isChecked:
    folders.deleteDir('Desktop')
    print "nopass"

有没有一种方法可以获取复选框是否被选中的布尔值?

2个回答

58

self.folderactive.isChecked不是一个布尔值,而是一个方法——在布尔上下文中,它总是会计算为True。如果你想获取复选框的状态,只需调用该方法:

self.folderactive.isChecked()

if self.folderactive.isChecked():
    ...
else:
    ...

2
为了避免使用if-then-else结构并自己以编程方式跟踪状态,是否有任何东西在checkBox被选中时发出信号(另一个在取消选中时),例如self.checkBox.toggled.connect(self.calculate) - Echeban
@Echeban 你有没有找到类似的东西,我也在找呢。 - pippo1980
复选框绑定到变量 PyQt5 - pippo1980

4
x = self.folderactive.isChecked()

x会是一个布尔值,TrueFalse

(正是最后的括号使得不同。)


但是在脚本中不会动态更新,对吗? - pippo1980

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接