gpt4 book ai didi

python - .pyw tk 程序立即关闭?

转载 作者:行者123 更新时间:2023-11-28 20:45:57 54 4
gpt4 key购买 nike

我刚刚开始学习 tkinter,我在这里缺少一些基本知识。当我除了创建一个空白窗口什么都不做时,我得到的结果好坏参半。这是代码:

from tkinter import *
from tkinter import ttk

root = Tk()

发生的情况是,如果我在 python shell 中运行它,它会完美运行(就像在 IDLE 编辑器中简单地按 F5),然后会弹出一个空白的小窗口并保持打开状态,直到我关闭它。

但是如果我简单地双击 .pyw 文件,什么也不会发生。如果我将其另存为 .py,则相同。

如果我将它另存为 .py 添加 input() 到末尾,然后会弹出一个空白小窗口并保持打开状态。将其添加到 .pyw 没有任何效果;仍然没有任何反应。这在一定程度上是有道理的,因为 .pyw 隐藏了控制台。

但是我在这里做错了什么?我需要做什么才能制作一个只显示空白窗口而不显示控制台的 .pyw?

最佳答案

问题不在于文件类型,您会很高兴知道这一点。保存为 .pyw 只是意味着当文件运行时控制台不会出现(没有附加字符串,代码运行完全相同) - 无论代码是什么,都没有异常(exception)。

您需要做的是将此添加到代码的末尾(这对所有 tkinter 程序都是必需的):

root.mainloop()  # this will launch the window

在我们进入 tkinter 事件循环之前,窗口不会出现,程序将停留在事件循环中,直到我们关闭窗口。

事件循环不仅处理来自用户(例如鼠标点击和按键)或窗口系统(例如重绘事件和窗口配置消息)的事件,它还处理 tkinter< 排队的操作 本身。这些操作包括几何管理(通过 .pack() 方法排队)和显示更新。这也意味着在您进入 mainloop() 之前,应用程序窗口不会出现。

我认为之所以不需要在IDLE中调用mainloop()是因为IDLE本身就是一个tkinter程序,它已经有一个事件循环了.因此,您在 shell 中键入的 tkinter 代码可能已绑定(bind)到 IDLE 的事件循环。

关于python - .pyw tk 程序立即关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21959542/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com