tkinter.mainloop 无法工作

2 投票
1 回答
2190 浏览
提问于 2025-04-18 11:36

我正在尝试创建一个基本的Tkinter窗口。
根据网上的教程,要创建一个窗口必须使用以下代码:

import Tkinter
window=Tkinter.Tk()
window.mainloop()

但是当我直接运行相同的代码时,Python会直接显示窗口,而window=Tkinter.Tk()window.mainloop()似乎没有任何效果。
有没有人能解释一下这是为什么吗?

补充:当我把代码放到一个文件里并运行时,它工作得很好。只是从交互式提示符下运行时不行。

1 个回答

1

调用 mainloop 是为了让你在窗口创建后可以与它进行互动。如果你有一个只做以下事情的 Python 脚本:

import Tkinter
window = Tkinter.Tk()

这个脚本在创建 window 后会立刻退出,所以你可能连窗口出现的机会都没有,窗口就消失了。(这还得看 window 是否真的被显示出来;在我对 Linux 和 Windows 的测试中,只有在调用 mainloop 后,window 才会被显示出来;即使我在 Tkinter.Tk() 调用后加了 time.sleepwindow 也只会在交互提示符中显示,而没有 mainloop 的话是不会显示的。)

mainloop() 还有一个最重要的功能,就是让 Tkinter 能够监听在 Tk 对象上发生的事件,比如按下按钮、单选框等,这些控件可能嵌入在窗口中,并将这些事件分发给你绑定的处理方法。如果没有这个功能,你就只能看着一个窗口,而没法做其他事情。

撰写回答