2014-02-06 56 views
0

使用Tkinter,我试图使一个标签消失,另一个出现在它的位置时,使用MenuOption()选择一个特定的选项。我可以在不需要“刷新”按钮的情况下完成此任务吗?Python ...隐藏小部件的菜单选项选择 - Tkinter

与我的代码示例更新:

mGui = Tk() 
mGui.geometry('570x130+700+200') 
mGui.resizable(width = FALSE, height = FALSE) 
mGui.title('Title') 


mylist = ['henry', 'tom', 'phil'] 
someValue = StringVar() 

mLabel = Label(text = 'name: ').grid(row = 0, column = 0, sticky = E) 

someMenu = OptionMenu(mGui, someValue, *mylist) 
someMenu.grid(row = 0, column = 1, sticky = W) 
someMenu.config(width = 14, anchor = W) 

mGui.mainloop() 

所以,如果someMenu.get()== '嗵' 我想隐藏mLabel ...

所以我已经添加了以下:

def something(): 
     print someValue.get() 

mylist = ['henry', 'tom', 'phil'] 
someValue = StringVar() 
someValue.trace('w', something) 

和我得到类型错误: 'NoneType' 对象不是可调用.. hmmmmm

+0

格......我已经搜索了一圈,发现了grid_remove方法,只是不知道如何将其在选项中选择集成.. – wonderstruck80

+0

你只是想要更改文字,还是完全删除标签? –

+0

要么或,更有效地改变文本,但我还没有得到那么多(初学程序员) – wonderstruck80

回答

1

你可以把TRA在someValue上,它可以在值改变时调用函数。在这个功能中,你可以做任何你想做的事情,包括删除小部件。

这个网站有一个例子:http://effbot.org/tkinterbook/variable.htm

+0

我得到一个TypeError:'NoneType'对象不可调用... – wonderstruck80

+0

原来我失踪* ()中的参数。现在它工作了! :) – wonderstruck80

0
if someMenu.get == "tom": 
    buttonName.pack() 
else: 
    buttonName.pack_forget() 
+0

也请简单介绍一下代码,使其更具教育意义。 – lpapp

+0

这可能不起作用 - 取决于小部件最初放置的方式,下次添加它们时,它们可能会添加到不同的位置。 –

+0

@LaszloPapp感谢指针,对不起,我是新手 – user3158670