【发布时间】:2019-06-18 21:57:32
【问题描述】:
参考:MacOS 10.14、Anaconda 的 Python 3.6、Spyder 3.3.4
我刚刚开始使用 Python 中的 tkinter,并且正在尝试运行从 Spyder 中找到的简单演示代码 here。为了完整起见,6行脚本如下:
import tkinter as tk
r = tk.Tk()
r.title('Counting Seconds')
button = tk.Button(r, text='Stop', width=25, command=r.destroy)
button.pack()
r.mainloop()
但是,当我运行它时,它会挂起。没有沙滩球,没有冰冻,什么都没有发生。摆脱挂起命令的唯一方法是重新启动 IPython 内核,或者关闭并重新启动 Spyder。
我想我已经将问题归结为:
r = tk.Tk()
如果单独执行,也会以同样的方式导致挂起。
我知道 MacOS 上的 Tkinter 和 Python 之间存在许多问题(例如 this),但我所见过的似乎都没有重现这个特定问题。
有什么想法吗?
【问题讨论】:
-
我认为 Spyder 不能与 tkinter 一起正常工作。在终端上尝试
python3 -m tkinter,如果弹出一个窗口没有任何挂起,那么 tkinter 在你的 Mac 上是很好的,你应该尝试其他一些 IDE,如 vscode 或 IDLE,但如果它挂起,然后尝试再次安装 anaconda。我一直在 mac 10.15.0、anaconda、vscode 1.35.0 上使用 tkinter,到目前为止我还没有遇到过这样的问题。 -
感谢@Saad 的评论。事实上,当我从命令行运行 python3 -m tkinter 时,我得到一个窗口,并且上面的脚本在 IDLE 中运行时没有错误。但是,它只适用于运行 Python 2.6 的 IDLE;当我尝试启动与我的 Python 3.6 关联的 IDLE 时,编辑器显示为空白。这似乎也与 mac 上的 tcl/tk 问题有关(例如here),所以我认为我上面链接的 Python 页面可能是解决方案。感谢您的有用评论。
-
如果你开启了黑暗模式,那么它就可以了。可能这个answer 可能会对您有所帮助。我有一些类似的问题。简而言之,在 mac 上,我猜 Tcl/Tk 的默认版本是 8.5,它有一些问题,而苹果只是没有更新。所以新的 python 包带有它们自己的 Tcl/Tk 版本。
-
@Saad 我确实启用了暗模式,但空白的 IDLE3.6 窗口并不像您的回答所暗示的那样是黑色的。而且,此外,我正在运行 tk/tcl 8.6.9,所以旧的 tcl/tk 版本不是这里的问题。还有其他想法吗?
-
IDLE 上的 Python 和 anaconda 上的 Python 都是不同的东西,都有自己的 Tcl/Tk 版本。尝试禁用暗模式并运行它,您也可以尝试直接从 anaconda-navigator 安装和使用 vscode。
标签: python-3.x macos tkinter