首页 > 解决方案 > tk.pack() 与 root.mainloop()

问题描述

为什么 tk.pack() 在 pycharm 中不起作用?它在 python 3.7 idle 中工作得很好,但在 pycharm 中你必须使用 tk.mainloop() 或 root.mainloop() 否则画布或窗口不会弹出。我正在使用 pycharm 社区版。有人可以帮忙吗?

在脚本中包含两者都有效,但 tk.pack() 似乎对代码没有影响。root.mainloop() 单独工作,但 tk.pack() 不能。

from tkinter import *

tk = Tk()
canvas = Canvas(tk, width=500, height=500)
tk.mainloop()

有效,但这不起作用:

from tkinter import *

tk = Tk()
canvas = Canvas(tk, width=500, height=500)
tk.pack()

我预计 tk.pack() 会弹出一个小窗口,但没有任何反应。有谁知道为什么?谢谢。

标签: pythontkinterpycharm

解决方案


我预计 tk.pack() 会弹出一个小窗口,但没有任何反应。有谁知道为什么?

它不会弹出窗口,因为那不是pack()pack将安排一个小部件在另一个小部件中,但除非您调用mainloop该小部件,否则它将永远不会出现。您必须1要求mainloop在您的程序中发生任何事情。

也就是说,mainlooppack服务器两个目的完全不同。


1 你必须有点强。主循环需要运行,但有时其他东西会导致它运行。例如,如果您在交互式提示中运行,则不需要调用它。但是,一般来说,需要确保它mainloop正在运行。这是使用 tkinter 的基本部分。


推荐阅读