Function Tkinter在类中调用函数
嗨,我在tkinter中调用函数时遇到问题 这是密码Function Tkinter在类中调用函数,function,tkinter,command,Function,Tkinter,Command,嗨,我在tkinter中调用函数时遇到问题 这是密码 class Demo(tk.Frame): def ShowOption(self): print(self.v1.get()) def __init__(self,controller): tk.Frame.__init__(self,width=800, height=600) f = Frame(self) optionList = ('A', 'B',
class Demo(tk.Frame):
def ShowOption(self):
print(self.v1.get())
def __init__(self,controller):
tk.Frame.__init__(self,width=800, height=600)
f = Frame(self)
optionList = ('A', 'B','C')
self.v1 = tk.StringVar()
self.v1.set(optionList[0])
Opt1 = tk.OptionMenu(f, self.v1, *optionList,command = self.ShowOption)
Opt1.grid(row=2,column=2,sticky='w')
f.place(relx = 0.5,rely=0.5,anchor='c')
我的问题是,如果我使用这个方法,它会声明函数接受1个位置参数,但如果我使用
Opt1 = tk.OptionMenu(f, self.v1, *optionList,command = self.ShowOption() )
创建类时,函数将直接运行
非常感谢您的帮助。请这样做
command = lambda : self.ShowOption()
选项菜单
的命令
选项的回调需要一个作为所选项的参数
因此,您可以使用lambda
跳过参数:
command=lambda v: self.ShowOption()
def ShowOption(self, value):
...
或重新定义ShowOption()
以接受参数:
command=lambda v: self.ShowOption()
def ShowOption(self, value):
...
我能知道位置论证的必要性吗?这个答案会随着进一步的解释而改进:原始代码中的问题是什么,这是如何解决的。