我刚刚开始学习tkinter,但这里缺少一些基本知识。当我尝试不做任何事情但创建一个空白窗口时,我得到的结果好坏参半。这是代码:
from tkinter import *
from tkinter import ttk
root = Tk()
发生的是,如果我在python shell中运行它,则可以正常运行(例如,只需在IDLE编辑器中单击F5),就会弹出一个空白窗口,直到我将其关闭为止。
但是,如果我只双击.pyw文件,则什么也没有发生。如果将其另存为.py,则相同。
如果我将其另存为.py并添加input()
到末尾,则将弹出空白窗口并保持打开状态。将其添加到.pyw无效;仍然没有任何反应。由于.pyw隐藏了控制台,因此这具有部分意义。
但是我在做什么错呢?要制作仅显示空白窗口而不显示控制台的.pyw,我该怎么做?
问题不在于文件类型,您将很高兴知道。另存为.pyw
公正意味着运行文件时控制台不会显示(不附加任何字符串,代码运行完全相同),并且无论代码如何都没有例外。
您需要做的是将其添加到代码末尾(这对于所有tkinter
程序都是必需的):
root.mainloop() # this will launch the window
直到我们进入tkinter
事件循环,该窗口才会出现,并且程序将保持在事件循环中,直到我们关闭该窗口。
事件循环不仅处理用户事件(例如鼠标单击和按键)或窗口系统(例如重画事件和窗口配置消息)的事件,还处理tkinter
自身排队的操作。这些操作包括几何管理(按.pack()
方法排队)和显示更新。这也意味着输入之前,不会出现应用程序窗口mainloop()
。
我认为您不需要调用mainloop()
IDLE的原因是因为IDLE本身是一个tkinter
程序,并且已经有一个事件循环。因此,可能tkinter
您在shell中键入的代码已绑定到IDLE的事件循环。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句