【问题标题】:In PyQt, how to pass different properties of QCheckBox在 PyQt 中,如何传递 QCheckBox 的不同属性
【发布时间】:2017-02-14 14:45:51
【问题描述】:

在example 之后构建,我如何传递/访问更多属性,然后是 QCheckBox 的“状态”?在这种情况下,我希望构建一个更动态的函数,该函数可用于多个按钮并将所有状态保存在一个字典中。

类似的东西(我主要是在寻找 'objectName' 的正确名称,因为它在 'ILCheckbox_changed' 定义中与 'state' 一起使用,也许更一般地说,我如何找到我可以通过的其他属性)

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_())

【问题讨论】:

  • 我实际上只是发现只有状态通过了,或者,我会寻找一些方法来例如传递具有所有属性的特定 CheckBox,例如 { ILCheckbox.stateChanged.connect(self.ILCheckbox_changed(ILCheckbox)) [...] def ILCheckbox_changed(self, check_box): print(check_box.objectName()) }

标签: python pyqt pyqt4 qcheckbox


【解决方案1】:

在每个插槽中,您都可以使用函数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)

【讨论】:

  • 太棒了,这正是我想要的,谢谢!
猜你喜欢
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 2020-02-08
相关资源
最近更新 更多