【问题标题】:how to close a tkinter window without terminating the program?如何在不终止程序的情况下关闭 tkinter 窗口?
【发布时间】:2014-12-03 16:51:49
【问题描述】:

我有一个正在为班级工作的项目,我正在使用 tkinter 来构建我的基本 GUI。 当我运行代码时,我有两个下拉菜单可供选择。我还想要一个按钮来关闭窗口并将程序推进到下一个 GUI 窗口。但是,我无法在不导致程序终止的情况下获得关闭窗口的按钮。这是我的代码

from tkinter import *

Options_year = ["2014", "2013", "2012", "2011", "2010"]
Options_month = ["January","February", "March", "April","May", "June", "July","August","September","October","November",
                 "December"]
master = Tk()
variable_year = StringVar(master)
variable_year.set(Options_year[0])
variable_month = StringVar(master)
variable_month.set(Options_month[0])
window = apply(OptionMenu, (master, variable_year) + tuple(Options_year))
window_month = apply(OptionMenu, (master,variable_month) + tuple(Options_month))
window.pack()
window_month.pack()
button = Button(master, text = "Continue", command = master.quit())
#the line above is the button that i want to use to close the window
button.pack()
mainloop()
print (variable_month.get())
print (variable_year.get())

编辑: 将其转换为框架并使用下面提供的答案并使其工作。感谢每一位帮助过我的人

【问题讨论】:

  • 上面的代码没有运行。 'tinter' 是拼写错误(tkinter?Tkinter?)。内置的“应用”在 2.7 中已弃用,并在 3.x 中消失。不要使用它。

标签: python tkinter


【解决方案1】:

销毁 gui 也会销毁 tk 变量。我强烈怀疑您忽略了由于尝试访问不再存在的 variable_month 的 .get 方法而导致程序以异常回溯终止的重要信息。以下工作正常。

from tkinter import *
root = Tk()
root.mainloop()
print('here')

【讨论】:

    【解决方案2】:

    使用顶层或框架,将小部件放入其中,然后销毁()它。如果不想显示,可以使用 master.withdraw() 或 iconify()。

    【讨论】:

    • 一旦mainloop之后的代码运行无误后,这应该是不必要的。
    • 作为一般规则,您不应该在 mainloop 之后运行任何代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 2021-04-17
    相关资源
    最近更新 更多