【发布时间】:2022-01-17 15:42:54
【问题描述】:
要理解我的问题,请遵循以下段落:
主循环无限处理什么代码?就像它一遍遍地读取整个程序的代码? 考虑代码:
from tkinter import *
window = Tk()
print("lol")
print("Hello World")
window.mainloop()
输出没有无限次打印“Hello World”或“lol”,因此 mainloop() 不会循环当前模块的代码。
现在考虑这段代码:
from tkinter import *
print("lol")
window = Tk()
print("Hello World")
while True:
window.update()
现在,即使这段代码执行相同的输出,所以现在我们可以考虑 mainloop() 循环代码“window.update()”无限次,但效率更高(不知何故)。
现在第一个问题出现了 window.update() 函数做什么来更新 GUI 中的值,它是否再次从上到下重新读取代码,或者更新函数如何更新 GUI 小部件值.
第二个问题是:
我读过this article
“Python Tkinter 中的 Mainloop 是应用程序窗口的无限循环,它永远运行,因此我们可以看到静止的屏幕。 应用程序窗口就像一个框架,每微秒都在销毁,但主循环继续创建一个新的更新窗口。 破坏旧窗纱并创建新窗纱的过程发生得如此之快,以至于人眼甚至都没有意识到。 由于进程运行无限时间,这就是为什么我们能够看到我们面前的应用程序,当我们关闭窗口时,循环终止或退出。”
如果这是真的,那么要重新创建一个更新的窗口,root.mainloop() 必须一次又一次地完全读取整个根 GUI 代码,或者是否有其他解释。
在过去的 6 小时里,我一直在努力理解这一点,并且我访问了每个站点,但我找不到适合我生活的解决方案。
问候, 拉希克
【问题讨论】:
-
它将代码包装在已编译的 DLL 中。您也不必担心它是如何工作的。这不会帮助您解决您自己的程序的任何问题。网络上的文章可能会使用隐喻来帮助您理解,但它们可能不是准确的描述。