2017-07-28 49 views
0

我在基於選項菜單中的選擇更新標籤時遇到問題。下面是我的代碼工作的例子:Tkinter:在OptionMenu選項更改時更改標籤

import Tkinter as tk 
from Tkinter import * 

secs = ['Subject', 'Difficulty', 'Percent', 'Grade', 'Pass'] 

master = Tk() 
v = StringVar(master) 
v.set(secs[0]) 
def on_option_change(event): 
    #lab2.destroy() 
    lab2 = tk.Label(master, text=v.get()) 
    lab2.grid(row=2, column=1) 
w = OptionMenu(master, v, *secs, command=on_option_change) 
w.grid(row=1, column=0) 
lab1 = tk.Label(master, text='Current value:') 
lab1.grid(row=2, column=0, sticky=E) 
lab2 = tk.Label(master, text=secs[0]) 
lab2.grid(row=2, column=1, sticky=W) 
mainloop() 

的問題是,選擇一個新的選項時,舊的標籤仍然落後新的。然而,當我添加代碼來摧毀舊的標籤,我可以理解,得到如下錯誤:

UnboundLocalError: local variable 'lab2' referenced before assignment 

在一個容易解決任何建議將最讚賞。一般來說,我對Tkinter和GUI的創建頗爲新手。我一直在尋找幾個小時的答案,沒有多大用處。

回答

0

通過在第一行的on_option_change函數中寫入「global lab2」使lab2變量爲全局變量。

+0

太棒了!謝謝!如果這很簡單,你能解釋一下爲什麼這樣有效嗎? – davo1979