在PyQt中,如何通过QCheckBox的不同属性

问题描述:

在以下example上建立,我如何通过/访问更多属性,然后QCheckBox的'状态'?在这种情况下,我正在构建一个更动态的功能,可用于多个按钮并将所有状态保存为字典。 (我主要是在'ILCheckbox_changed'定义中寻找与'state'一起使用的'objectName'的正确名称,也许更一般地我如何找到其他属性,我可以通过)在PyQt中,如何通过QCheckBox的不同属性

import sys 

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 

class SelectionWindow(QMainWindow): 
    def __init__(self, parent=None): 
     super(SelectionWindow, self).__init__() 

     self.ILCheck = False 
     ILCheckbox = QCheckBox(self) 
     ILCheckbox.setCheckState(Qt.Unchecked) 

     self.check_box_dict = {} 
     ILCheckbox.stateChanged.connect(self.ILCheckbox_changed) 

     MainLayout = QGridLayout() 
     MainLayout.addWidget(ILCheckbox, 0, 0, 1, 1) 

     self.setLayout(MainLayout) 

    def ILCheckbox_changed(self, state, objectName): 
     self.ILCheck = (state == Qt.Checked) 

     print(self.ILCheck) 
     self.check_box_dict[objectName] = self.ILCheck 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    window = SelectionWindow() 

    window.show() 
    sys.exit(app.exec_()) 
+0

其实我才发现,原来刚才的状态下通过,或者,我会寻找一些方法来例如越过与它的所有属性的特定复选框,成才像 { ILCheckbox.stateChanged.connect(self.ILCheckbox_changed(ILCheckbox)) [...] DEF ILCheckbox_changed(个体,check_box): 打印(check_box.objectName ()) } – Tobias

在每一个插槽,你可以访问与函数发送信号的对象self.sender()

def ILCheckbox_changed(self, state): 
    self.ILCheck = (state == Qt.Checked) 
    print(self.ILCheck) 
    self.check_box_dict[self.sender()] = self.ILCheck 
    print(self.check_box_dict) 
+0

惊人的,这就是我正在寻找的,谢谢! – Tobias

+0

如果我的答案可以帮助你,请将答案标记为正确。 – eyllanesc