2016-07-24 7 views
0

Ich versuche, eine Reihe von Standardwerten in einer Gruppe von Kontrollkästchen, die ich habe, zu aktivieren. Jetzt anstatt jeden Standardwert einzeln auf 1 zu setzen. Ich habe mich gefragt, ob es eine Möglichkeit gibt, alle meine Variablen einem Wörterbuch zuzuweisen, so dass ich alle meine Variablen aus dem Wörterbuch lösen und sie auf 1 setzen kann, anstatt sie einzeln zu schreiben. Auf diese Weise kann ich die Gruppe von Variablen über die App als Gruppe manipulieren.Python und Tkinter ändern Wörterbuch zu Variablen

Aktueller Code:

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) 

fehlgeschlagen Code:

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

Sie können das auch mit einer Liste tun oder was auch immer Sie wollen. Aber in keinem dieser Fälle gewinnt Ihr Programm mehr Leistung. –

Antwort

0

Speichern Sie die tatsächlichen Variablen anstatt die Namen der Variablen:

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

Natürlich, wenn Sie das tun, Es gibt keinen Grund, jede Variable als separates Attribut zu speichern:

# in initialization code: 
values = [] 
for i in range(10): 
    values.append(StringVar()) 
... 
CheckButton(..., variable=values[0], ...) 
CheckButton(..., variable=values[1], ...) 
...