Tkinter 无法连接到显示器“:0”。

4
我正在使用tkinter进行一个项目,运行代码时我收到了以下信息:
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_ tkinter.TclError: couldn't connect to display ":0"

echo $DISPLAY returns :0

我尝试了 export DISPLAY=:0 和 export DISPLAY=:0.0,但都不起作用。我想在我使用的笔记本电脑屏幕上显示GUI(论坛上关于SSH的回答似乎与此无关)。我正在使用Windows上的Ubuntu。我已经尝试过使用Python3和2.7,但是我得到了同样的消息。

2
如果您正在运行WSL,则需要安装X服务器。 - borrible
3个回答

8

在Windows上使用WSL开发Tkinter应用程序有两个主要选项。

1) 以跨平台开发为目标开发应用程序,然后通过MS-DOS运行应用程序。使用GitHub可以帮助你处理行尾。这是我推荐的方法(也是我使用的方法),特别是如果你正在使用包含pathlib.Path的Python 3.4+。

2)不推荐安装x-server在Windows上,如果你非要这么做,那么似乎Xming是最容易搞定的。一旦安装完成,请运行:

sudo apt-get install x11-apps

...然后像之前一样导出您的显示器...

export DISPLAY=:0

运行WSL中的应用程序(例如xcalc),测试安装是否成功... 示例图片

xcalc

以下是在WSL中通过Xming运行的tkinter应用程序示例,我已注释掉图标代码... tkinter app on xming

我建议通过MS-DOS运行应用程序,当我测试xming时,它无法处理".ico"文件。 这样可能会阻碍更复杂的应用程序。 但是,如果您选择这条路线,可以在此处获得更多信息


1
如果您的操作系统是Linux,请运行以下命令:

执行此命令:

sudo xhost

然后你会看到这个 -> SI:localuser:<电脑名称>

然后运行这个命令:

sudo xhost -SI:localuser:<pc name>

0

正如 @borrible 在评论中提到的,你需要安装一个 X 服务器。详情请参见this page


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接