【问题标题】:Python PyQt5 loop checkbox valuesPython PyQt5 循环复选框值
【发布时间】:2018-02-24 16:40:57
【问题描述】:

我正在尝试遍历 PyQt5 gui 中的所有复选框。

for i in range(2):
    self.checkbox+i

这给了我错误“窗口没有复选框属性”。 Window.checkbox 确实不存在。它需要一个数字。

我尝试了多种方法,例如:

for N in range(2):
    obj = self.checkbox+N
    print(obj.text())

为什么我的 for 循环失败或更好,我如何让我的 for 循环运行? 欢迎提出任何建议。

您好, 米歇尔

# working example

#!/usr/bin/env python3
from PyQt5.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        layout = QGridLayout()
        self.setLayout(layout)

        self.checkbox0 = QCheckBox("checkMe0")
        self.checkbox0.toggled.connect(self.checkbox_toggled)
        layout.addWidget(self.checkbox0, 0, 0)

        self.checkbox1 = QCheckBox("checkMe1")
        self.checkbox1.toggled.connect(self.checkbox_toggled)
        layout.addWidget(self.checkbox1, 1, 0)



    def checkbox_toggled(self):
        print(self.checkbox0.text())

app = QApplication(sys.argv)
screen = Window()
screen.show()
sys.exit(app.exec_())

【问题讨论】:

    标签: python-3.x for-loop pyqt5 qcheckbox


    【解决方案1】:

    您不能以您尝试的方式分配变量。复选框 + 1 不等于名为 self.checkbox1 的复选框项目。要按照您尝试的方式执行此操作,您可以使用字典。它看起来像这样:

    check_dict = {0: self.checkbox0, 1: self.checkbox1}
    for i in range(len(check_dict)):
        checkbox = check_dict[i]
        checkbox.setChecked(True)
    

    【讨论】:

    • 亲爱的 MalloDelacroix, 非常非常感谢!我已经尝试过这种方法并且它有效。谢谢!
    • 在这种情况下,列表可能比字典更合适。例如,将第一行更改为 check_dict = [self.checkbox0, self.checkbox1] 并保持此答案中的其余代码相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多