【问题标题】:Iterate check boxes - pyqt迭代复选框 - pyqt
【发布时间】:2017-03-08 15:08:48
【问题描述】:

我有一个数字不断变化的文件(每次我调用 QGIS 插件时):

0
8
7

我有 9 个复选框(self.t0、self.t1、...、self.t8)

在文件内容的情况下,我要设置复选框:

我试过了:

class mask_n_functions(QDialog, Ui_Dialog):

    def __init__(self, parent):
        QDialog.__init__(self, parent)
        self.setupUi(self)

        self.set_prefs.clicked.connect(self.preferences)
        self.cancel.clicked.connect(self.closePlugin)

        with open(r'C:\\path\\checklist.txt', "r") as f:
            for line in f:
                checkboxname = "t" + str(line)
                self.checkboxname.setChecked(True)

我得到错误:

AttributeError: 'mask_n_functions' object has no attribute 'checkboxname'

如何遍历复选框?

我必须使用组框吗?

【问题讨论】:

    标签: python pyqt qgis


    【解决方案1】:

    您需要使用getattr 函数。您使用的样式在 PHP 中有效,在 Python 中无效。

    因此,请使用以下内容代替问题中提到的最后一行。

    checkbox = getattr(self, checkboxname)
    checkbox.setChecked(True)
    

    【讨论】:

    • 谢谢。它仅在我使用checkboxstring = "t" + str(line)checkboxname = checkboxstring.strip() 从复选框名称字符串中删除所有空格时才有效。从文件中读取字符串时,字符串中有空格(在打开的文本文件中看不到)。
    • 是的,属性名称必须正确,空格会成为问题。
    猜你喜欢
    • 1970-01-01
    • 2012-02-16
    • 2011-02-04
    • 2023-04-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多