2017-03-08 66 views
0

我有换号(我每次调用QGIS插件时间)的文件:迭代复选框 - PyQt的

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' 

如何迭代复选框?

我必须使用组框吗?

回答

1

您需要使用getattr功能。您使用的风格,使用PHP,而不使用Python。

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

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

谢谢。它只有当我用checkboxstring =“t”+ str(line)'和checkboxname = checkboxstring.strip()'从checkboxname字符串中删除所有空格时才起作用。从文件中读取时,字符串中有空白(在打开的文本文件中未看到)。 – Stefan

+0

是的,属性名称必须正确,空格将成为问题。 –