mac上的Tkinter显示为黑屏



这是我的代码:

from tkinter import *
root = Tk()
root.title("Greeting")
Label(root, text = "Hello World").pack()
root.mainloop()

但运行后,窗口上唯一显示的是一个黑屏

如果这有助于,你可以在这张图片中看到代码和窗口

在Python 3.8和Mac os Monterey上也有同样的问题;我按照以下步骤解决了这个问题:

  1. 已将Mac Os升级到最新版本
  2. 已将Python升级到3.10/3.11

我的问题已经解决。

经过大量挖掘,我找到了一个解决方案(有一些注意事项(-您需要同时安装homebrewpyenv才能正常工作。这个想法是用一个真正有效的最新tkinter安装来取代你以前不推荐的tkinter(并让你的Mac系统Python单独使用!(

请注意,这将清除您使用pip安装的任何软件包-首先备份这些软件包!pyenv有一个名为pyenv-pip-migrate的插件,可以让这变得更容易。

运行以下命令

  1. brew uninstall tcl-tk卸载旧的tk(如果您有(

  2. pyenv uninstall 3.10.5。。。或者不管你当前的全球Python版本是

  3. brew install tcl-tk重新安装tk

  4. pyenv install 3.10.5获取Python 3.10.5(或任何一个(的新安装

  5. pyenv global 3.10.5设置您的全局Python版本(与您刚才安装的版本匹配(

在使用pyenv安装Python之前,您需要通过homebrew安装tk,因为pyenv在安装Python时会自动尝试使用它能找到的任何tk包。

如果您使用pyenv从Python的一个版本升级到另一个版本,这也会起作用。

最后的想法

  • 如果您还没有安装homebrew,以下是的良好说明

  • 如果您没有pyenv,只需运行brew install pyenv

  • 您可能需要再次在VSCode 中选择您喜欢的Python解释器

*这对我有效-YMMV

我在M1 Pro上遇到了同样的问题。在英特尔Mac上运行良好,但在M1上则不然。我在文件对话框中遇到了另一个问题,在该对话框中,文件类型不会出现在M1中,但在英特尔Mac上可以完美工作。我不相信硬件是问题所在,但更相信它是Tkinter到平台的端口。

通过运行以下命令在新的虚拟环境中安装/激活并导入所有全局安装的软件包:

pip install virtualenv
virtualenv venv --system-site-packages
source venv/bin/activate

添加命名空间from tkmacosx import Label

代码段:

from tkmacosx import Label
from tkinter import *
root = Tk()
root.title("Greeting")
Label(root, text = "Hello World").pack()
root.mainloop()

最新更新