python - 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() 会弹出一个小窗口,但没有任何反应。有谁知道为什么?谢谢。
解决方案
我预计 tk.pack() 会弹出一个小窗口,但没有任何反应。有谁知道为什么?
它不会弹出窗口,因为那不是pack()
。pack
将安排一个小部件在另一个小部件中,但除非您调用mainloop
该小部件,否则它将永远不会出现。您必须1要求mainloop
在您的程序中发生任何事情。
也就是说,mainloop
和pack
服务器两个目的完全不同。
1 你必须有点强。主循环需要运行,但有时其他东西会导致它运行。例如,如果您在交互式提示中运行,则不需要调用它。但是,一般来说,需要确保它mainloop
正在运行。这是使用 tkinter 的基本部分。
推荐阅读
- javascript - 防止用户在未填写所需信息的情况下按下一步并在向导表单中显示警告消息 html 和 javascript 有效
- plantuml - plantuml : 分组序列使演员出现
- reactjs - 在 React 中,为什么在某些情况下会渲染两次?
- python - 模块“matplotlib”在 Django 中没有属性“switch_backend”
- asp.net - github 中 EF plus 审计功能的工作示例
- scrapy - Scrapy:(400 Bad Request)HTTP状态码未处理或不允许
- kubernetes-service - Kubernetes ClusterIP 服务只能从端点存在的节点访问
- c# - 在两个垂直注释之间创建一条箭头线
- julia - 如何在 Julia 中适当地调用参数构造函数?
- php - 为什么 HTML 文件的 PHP 版本不显示所有元素?