Python 单击后销毁Tkinter按钮

Python 单击后销毁Tkinter按钮,python,tkinter,Python,Tkinter,我有一个包含城市名称的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:"

我有一个包含城市名称的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()”


我做错了什么?

您的按钮不会破坏,因为它的功能在执行此操作之前会“返回”。这也是不好的,因为
命令
。执行以下更改:

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()

通过这种方式,您可以先保存
某个外部作用域上的
变量.get()
的值,然后
销毁所有GUI。

您的按钮不会
销毁
,因为它的函数在执行此操作之前“返回”。这也是不好的,因为
命令
。执行以下更改:

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()
这样,您可以先在
某些外部作用域上保存
变量.get()
的值,然后
销毁所有GUI。

尝试使用 button.destroy() 如果只想销毁按钮。

请尝试使用 button.destroy()
如果您只想销毁按钮。

这不是一个问题。什么是
窗口
至少?这不是一个问题。什么是
窗口
至少?原来变量在外部范围内。我删除了“some_outer_scope_var=variable.get()”,它开始工作。@user61629不应该是这种情况,除非您有多个
Tk
实例。事实证明,该变量在外部作用域中。我删除了“some\u outer\u scope\u var=variable.get()”并开始工作。@user61629不应该是这种情况,除非您有多个
Tk
实例。