首页 > 解决方案 > tkinter 的 mainloop() 函数实际上是一个循环吗?

问题描述

感谢您对另一个新手问题的耐心等待。我正在学习 tkinter,我对 mainloop() 感到困惑。究竟什么是循环?例如:

import tkinter as tk
class Test(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.create_widgets()
        x = 2
        x += 1
        print(x)
    def create_widgets(self):
        y = 1
        y += 1
        print(y)


root = tk.Tk()
app = Test(master=root)
app.mainloop()

如果这个程序正在循环通过类 Test(或任何一个函数),我的控制台应该继续打印增加的 x 和 y 值。当然,事实并非如此。它只打印一次 x 和 y。

感谢您的帮助!

标签: pythonpython-3.xtkintermainloop

解决方案


我对 mainloop() 感到困惑。究竟什么是循环?

Tkinter 维护一个事件队列。mainloop循环遍历该队列,拉出项目并执行绑定到事件的函数。

如果这个程序正在循环通过类 Test ...

它不会遍历您的代码。有一个内部的、不断更新的事件列表。mainloop循环遍历该列表。它不会遍历您的代码。


推荐阅读