2016-07-24 5 views
0

私が持っているチェックボックスのグループでデフォルト値のセットをアクティブにしようとしています。各デフォルトを個別に1に設定する代わりに辞書にすべての変数を代入して、すべての変数をループして個別に書き込むのではなく、1に設定する方法があるかどうかは疑問でした。このようにして、私はグループとしてアプリケーションを通して変数のグループを操作することができます。PythonとTkinterが辞書を変数に変更しています

現在のコード:

if self.mastervar.get() == 1: 

      self.var1.set(1) 
      self.var2.set(1) 
      self.var3.set(1) 
      self.var4.set(1) 
      self.var5.set(1) 
      self.var6.set(1) 
      self.var7.set(1) 

失敗しましたコード:

values {'self.var1', 
      'self.var2', 
      'self.var3',    
      'self.var4', 
      'self.var5', 
      self.var6', 
      self.var7'} 
for x in values: 
     locals()[values[x]] 
     values[x].set(1) 
+0

リストを使用して、または任意のものを実行できます。しかし、これらのケースでは、プログラムのパフォーマンスが向上しません。 –

答えて

0

ストア実際の変数ではなく変数名:もちろん

values = [self.var1, self.var2, self.var3, ...] 
for var in values: 
    var.set(1) 

、あなたがそれを行うたら各変数を別の属性として保持する理由はありません:

# in initialization code: 
values = [] 
for i in range(10): 
    values.append(StringVar()) 
... 
CheckButton(..., variable=values[0], ...) 
CheckButton(..., variable=values[1], ...) 
... 
関連する問題