2017-06-21 4 views
-1

同じコールバックに対して2つの文字列変数をトレースしたい場合、これらの変数は2つのドロップメニュー用です。Tkinterを使用するときの変数トレースメソッドのエラー

両方の変数を同じ関数にトレースすると問題が発生します。私はここにあなたがselctdModmにトレースを追加時にエラー

import Tkinter as tk 
import ttk 

class SampleApp(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     self.handlersList = ["handlr1", "handlr2", "handlr3"] 
     self.modemList = ["modem1","modem2","modem3"] 

     self.selctdModm = tk.StringVar(self) 
     self.selctdModm.set("Select a Modem") 
     self.defaultModem = "Select a Modem" 
     self.modemList.insert(0,self.defaultModem) 

     self.selctdModm.trace('w', self.start) 
     self.drop_Menu_Modems = ttk.OptionMenu(self, self.selctdModm, 
             self.modemList[0], 
             *self.modemList, 
             command= "") 
     self.drop_Menu_Modems.pack() 
     self.drop_Menu_Modems.config(width = 15) 




     self.selctdHandler = tk.StringVar(self) 
     self.selctdHandler.set("Select a Handler") 
     self.defaultHandlr = "Select a Handler" 
     self.handlersList.insert(0,self.defaultHandlr) 

     self.selctdHandler.trace('w', self.start)     
     self.drop_Menu_handlrs = ttk.OptionMenu(self, self.selctdHandler, 
               self.handlersList[0], 
               *self.handlersList, 
               command= "") 
     self.drop_Menu_handlrs.pack() 
     self.drop_Menu_handlrs.config(width = 15) 


    def start(self, *args): 

     handler = self.selctdHandler.get() 



app = SampleApp() 
app.mainloop() 

答えて

1

の一例である、はAttributeErrorを得、これあなたがAttributeErrorを得る作成した何self.selctdHandlerはありません。

self.selctdModm.trace('w', self.start)のどこかでself.selctdHandlerの初期化後に移動します。

関連する問題