用标签为"Good-bye"
的按钮编写一个GUI应用程序。当
Button
单击,窗口关闭。
到目前为止,这是我的代码,但它不起作用。有人能帮我写密码吗?
from Tkinter import *
window = Tk()
def close_window (root):
root.destroy()
frame = Frame(window)
frame.pack()
button = Button (frame, text = "Good-bye.", command = close_window)
button.pack()
window.mainloop()
可以将函数对象
window.destroy
直接关联到button
的command
属性:这样您就不需要函数
close_window
来为您关闭窗口。只需对代码进行最少的编辑(不确定他们是否教过课程),就可以更改:
到
它应该能起作用。
说明:
您的
close_window
版本被定义为只需要一个参数,即root
。随后,任何对close_window
版本的调用都需要有该参数,否则Python将给您一个运行时错误。当您创建一个
Button
时,您告诉按钮在单击时运行close_window
。但是,Button小部件的源代码如下:正如我的代码所述,
Button
类将不带参数地调用函数。但是,函数需要参数。所以你犯了个错误。所以,如果我们去掉这个参数,这样函数调用就可以在Button类中执行,我们就剩下:不过,这也不对,因为
root
从来没有赋值。这就像在尚未定义x
时键入print(x)
。看看你的代码,我想你想在
window
上调用destroy
,所以我把root
改为window
。您可以创建一个扩展Tkinter
Button
类的类,该类将通过将destroy
方法与其command
属性关联来专门关闭窗口:这是输出:
以及之前代码不起作用的原因:
我有一种轻微的感觉,你可能从其他地方得到根,因为你做了
window = tk()
。当您对Tkinter中的
window
调用destroy意味着销毁整个应用程序,因为您的window
(根窗口)是应用程序的主窗口。我想你应该把window
改成root
。相关问题 更多 >
编程相关推荐