单击后销毁Tkinter按钮

问题描述 投票:0回答:1

我有一个填充了城市名称的Tkinter列表框。我想获取所选值并将其传递给mainloop之后的后续代码。我有以下tkinker代码:

master = tk.Tk()

variable = StringVar(master)
variable.set(cities_list[0]) # default value

w = OptionMenu(master, variable, *cities_list)
w.pack()

def ok():
    print ("value is:" + variable.get())
    return  variable.get()
    window.destroy()


button = Button(master, text="OK", command=ok)
button.pack()

mainloop()


v_list = variable.get().split('-')

按钮卡在一个循环中,不会关闭。我想在选择后关闭按钮。我试过“window.destroy()”和“master.destroy()”

我究竟做错了什么?

python tkinter
1个回答
2
投票

你的按钮不是destroy,因为它的功能在返回之前“返回”。这也是坏的,因为一个commandcallback method can't really return anywhere meaningful。进行以下更改:

some_outer_scope_var = None

def ok():
    global some_outer_scope_var
    some_outer_scope_var = variable.get()
    print ("value is:" + variable.get())
    master.destroy()

这样你首先在variable.get()上保存some_outer_scope_var的值,然后在所有GUI中保存destroy

© www.soinside.com 2019 - 2024. All rights reserved.