Tkinter:OptionMenu选择更改时更改标签

时间:2017-07-28 21:56:10

标签: python user-interface tkinter

我无法根据选项菜单中的选项更新标签。下面是我的代码的一个工作示例:

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创建的新手。我一直在寻找几个小时的答案,但收效甚微。

1 个答案:

答案 0 :(得分:0)

通过在第一行的on_option_change函数内写入“global lab2”,使lab2变量成为全局变量。