猿问

macOS、Tkinter、Python (Macports) 给出错误

我在 macOS 上使用 Python 获得“无 $DISPLAY 环境变量”。那是 MacPorts python 3.7,而不是本机 python。我想在虚拟环境中使用 MacPorts python,这样我就可以保持我的项目干净。我还必须使用 MacPorts 而不是 Homebrew。


我尝试将 $DISPLAY 值设置为 :0.0 失败,但以下链接无济于事,因为我没有使用 matplotlib,而且我在一台带有tkinter、python 和 seaborn 的显示问题的机器上运行:_tkinter.TclError : 没有显示名称,也没有 $DISPLAY 环境变量


我从这里 [ https://www.python.org/download/mac/tcltk/#built-in-8-6-8]了解到,不再推荐使用 X11,而是使用 Aqua Cocoa Tk。


问题:正确设置此环境变量的诀窍是什么?


我的堆栈是:


macOS 莫哈韦


安装了以下相关端口的 Macports:


py37-tkinter @3.7.4 python/py-tkinter

py37-virtualenv @16.7.2 python/py-virtualenv

python37 @3.7.4 lang/python37

tcl @8.6.9 语言/tcl

传统知识@8.6.9 x11/tk

virtualenv_select @0.1 python/virtualenv_select

当我跑步时


import tkinter as tk

tk._test()

我明白了


_tkinter.TclError: no display name and no $DISPLAY environment variable


莫回无
浏览 123回答 2
2回答

慕村225694

相当新的 macOS 版本默认没有 Xserver,因此您还需要安装一个。据我所知(即我正在使用它),XQuartz工作得足够了。另一种选择是使用使用 Aqua 后端而不是 X11 后端的 Tk 构建。

蝴蝶刀刀

我有同样的问题,直到电线。无法tkinter使用任何类型的图形界面正常运行,希望在我的 Python 文件中使用 MacPorts 时保持一致,并且我目前没有使用matplotlib任何东西。运行 macOS 10.15.5,我发现问题似乎是我的tk端口和我的xorg-server端口没有礼貌地相互通信。我已将前者安装为依赖项;结果,以前的安装默认为x11变体(就像 OP 的端口一样)。我不确定如何使 Aqua Cocoa 版本工作,但重新安装tk和指定quartz变体为我解决了这个问题:sudo port install tk +quartz如果这对您有用,您对 to 的调用tk._test()应该停止返回您给定的TclError.希望。
随时随地看视频慕课网APP

相关分类

Python
我要回答