使用 Tkinter 时变量跟踪方法错误
Variable trace method error when using Tkinter
我有两个字符串变量,我想为相同的回调跟踪这些变量用于两个下拉菜单。
当我将两个变量跟踪到同一个函数时出现问题。我得到了 AttributeError,这里是错误的例子
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()
在您向 selctdModm
添加跟踪时,没有创建 self.selctdHandler
因此您得到 AttributeError
.
在 self.selctdHandler
初始化后将 self.selctdModm.trace('w', self.start)
移动到某处。
我有两个字符串变量,我想为相同的回调跟踪这些变量用于两个下拉菜单。
当我将两个变量跟踪到同一个函数时出现问题。我得到了 AttributeError,这里是错误的例子
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()
在您向 selctdModm
添加跟踪时,没有创建 self.selctdHandler
因此您得到 AttributeError
.
在 self.selctdHandler
初始化后将 self.selctdModm.trace('w', self.start)
移动到某处。