2014-02-06 143 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