2017-03-08 18 views
0

私は変更番号を持つファイル(私はQGISプラグインを呼び出すたびに)持っている:反復チェックボックス - PyQtは

0 
8 
7 

をそして、私は9つのチェックボックス(self.t0、self.t1を、持っています...私が手

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) 

:私はこれを試してみました

:私がチェックボックスを設定したいファイルの内容では、self.t8)

エラー:

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

チェックボックスを反復処理するにはどうすればよいですか?

グループボックスを使用する必要がありますか?

答えて

1

getattr機能を使用する必要があります。あなたが使用しているスタイルは、PythonではなくPHPで動作します。

したがって、質問に記載されている最後の行の代わりに、次のようなものを使用してください。

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

ありがとうございます。 'checkboxstring =" t "+ str(line)'と 'checkboxname = checkboxstring.strip()'でcheckboxname文字列からすべての空白を削除した場合にのみ動作します。ファイルから読み込むときに文字列に空白があります(開いているテキストファイルには表示されません)。 – Stefan

+0

はい、属性名が正しくなければなりません。空白が問題になります。 –