gpt4 book ai didi

python - 为什么 Tkinter.Tk() 不立即打开窗口?

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:35 28 4
gpt4 key购买 nike

我在 python 2.7 中使用 Tkinter,我注意到有时在我启动 mainloop 方法之前根窗口不会打开。我补充说,在那些情况下,当关闭窗口时,程序将结束(root.mainloop 是代码中的最后一行),而在其他情况下,它不会发生。

为什么会这样?

最佳答案

简短的回答是它正在发生,因为这就是它被设计成发生的方式。

除了通过事件循环,tkinter 中没有任何事情发生。即使像窗口出现这样简单的事情也是事件循环响应事件。例如,当您创建窗口时(假设您不撤回它),一个“重绘自己”事件实际上被添加到事件队列中。当您启动事件循环时,这是它处理的第一个事件,并且会出现窗口。

当您调用 mainloop() 时,会导致事件循环开始处理事件。它旨在开始处理事件,直到根窗口被销毁后才返回。这就是为什么对 mainloop 的调用通常是文件中最后一行代码的原因,因为一旦用户关闭了窗口,通常没有其他事情可做。

另一种处理事件的方法是调用updateupdate_idletasksupdate 将启动事件循环,并在处理完所有未决事件后返回(即:它不会等待窗口被销毁)。 update_idletasks 类似,但仅更新“空闲”事件:使用 after 安排的事件、与重绘窗口相关的事件,以及其他一些事件。它不处理用户生成的事件,例如鼠标和按钮点击。

关于python - 为什么 Tkinter.Tk() 不立即打开窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53452075/

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