代码,

from Tkinter import *

master = Tk()
Label(master, text="Current Age: ").grid(row=0, column=0)
current = StringVar(master)
current.set("0")

coption = OptionMenu(master, current, *[str(i) for i in range(95)])
coption.grid(row=0,column=1)

Label(master, text="Target Age: ").grid(row=1, column=0)

target = StringVar(master)
target.set("0") # default deger

toption = OptionMenu(master, target, *[str(i) for i in range(95)])
toption.grid(row=1,column=1)

mainloop()


我有2个组合框,一个用于当前年龄,一个用于目标年龄。我希望目标年龄仅包含当前年龄以上的值。因此,我认为我需要以某种方式在变更回调上进行注册。我搜索了谷歌,但没有帮助。

最佳答案

在这里,您具有修改目标菜单选项和触发它的事件的功能:

def changed(*args):
    start = current.get()
    print(start)
    menu = toption["menu"]
    menu.delete(0, END)
    for age in range(int(start), 95):
        menu.add_command(label=age,
                         command=lambda v=target, l=age: v.set(l))
    target.set(start)

current.trace('w', changed)


这部分来自hereherehere

关于python - 我可以在Tkinter中注册更改事件的回调吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14110060/

10-16 05:19