在Windows 10中的Ubuntu中使用tkinter。错误信息:"没有显示名称和$DISPLAY环境变量"。

22

我最近安装了适用于Windows 10的Ubuntu应用程序,以便我可以在课程中使用它。

我正在按照一些神秘的任务说明来“尝试tkinter”。

我在Ubuntu终端窗口中安装了包python3-tk,遵循以下指令这里:如何在ubuntu / Debian / Linux mint中安装和使用Tkinter

然后我执行

~$ python3

结果如下

Python 3.5.2 (default, Aug 18 2017, 17:48:00)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.

然后执行以下命令:

>>> import tkinter
>>> tkinter.Tk()

由于产生的错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.5/tkinter/__init__.py", line 1871, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, 
wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable

这可能对您有所帮助吗?https://dev59.com/1WIk5IYBdhLWcg3waNZr - Paolo
情况不同,因为我没有使用ssh。一切都在我的本地机器上。我更新了我的帖子以更好地澄清。也许可以从那篇帖子中获得一些见解(已经阅读了多篇类似的帖子),但我不知道如何将那些帖子中的信息应用到我的情况中。 - Zach
1
冒昧问一句,您是否有一个名为 $DISPLAY 的环境变量? - Silvio Mayolo
错误消息出现在tcl/tk for linux尝试连接X服务器时。 我猜您必须告诉Ubuntu这样做,或者告诉tcl/tk不要寻找它。 我无论如何都不知道。 (以前问题的解决方案是告诉matplotlib不要寻找X服务器。)请详细说明您实际上所做的事情。 您应该直接运行Python,而不是通过IDLE。 也许您尽管有标签,但仍然执行了前者,因为我怀疑当调用tkinter.Tk()时,IDLE应该会失败。 - Terry Jan Reedy
我使用Linux,并且有DISPLAY=:0。我可以在命令行中更改它,如DISPLAY=:0export DISPLAY=:0。或者我可以将其放入文件.bashrc中,该文件每次登录时都会执行 - 因此我不必手动执行它。 - furas
感谢您的反馈。已更新帖子。我正在遵循一些有关使用tkinter入门的指南:http://www.techinfected.net/2015/09/how-to-install-and-use-tkinter-in-ubuntu-debian-linux-mint.html。我尝试了furas的建议。我一直在阅读有关X服务器的信息,因为我认为Terry的评论是正确的方向。 - Zach
3个回答

33

已解决:

注意:这是在Windows 10内使用Ubuntu应用程序时的操作。

安装Xming X服务器 for Windows

在安装期间,有一个选项可以将显示设置为0。

按建议,在.bashrc中添加一行export DISPLAY=:0;


运行gitk命令时遇到了问题,现在已经解决了,感谢您的答复。 - Syed Danial
我在Windows端没有任何设置显示的选项。在Linux SSH端,我将您的导出命令添加到了.bashrc文件中。现在我没有看到任何错误,但是我也没有看到窗口。 - Mote Zart

8

我也遇到了同样的问题。我最近从商店中安装了“Bash on Ubuntu on Windows”应用程序,在运行试图创建Python UI的脚本时出现了以下错误:

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

我按照@Zach的指示操作,但我的问题仍然存在。在遵循@Zach的指导后,我解决了我的问题。
  1. 首先我安装了适用于Windows的Xming X Server。
  2. 然后我进入Ubuntu终端上的主目录~,通过执行vim .bashrc打开了我的.bashrc文件。
  3. 在文件末尾,我添加了以下行:export DISPLAY=:0;。我使用了“export”而不是“execute”。

在尝试执行Python脚本之前,请确保关闭所有终端实例。

这对我起作用了!


是的。我打字不行。或者显然不知道“导出”和“执行”的区别。嗯。。。 - Zach

1

1
我不想安装Xming,但我不知道这个答案是什么意思。你能解释一下吗? - Mote Zart

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