2017-02-14 62 views
0

在以下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

回答

0

在每一個插槽,你可以訪問與函數發送信號的對象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