从 Cygwin 启动 python IDLE 时 Tkinter 中的 tcl_error

Posted

技术标签:

【中文标题】从 Cygwin 启动 python IDLE 时 Tkinter 中的 tcl_error【英文标题】:tcl_error in Tkinter when launching python IDLE from Cygwin 【发布时间】:2014-12-20 17:16:15 【问题描述】:

我尝试从 cygwin 启动 IDLE,但出现以下错误:

Traceback (most recent call last):
  File "/usr/bin/idle", line 5, in <module>
    main()
  File "/usr/lib/python2.7/idlelib/PyShell.py", line 1537, in main
    root = Tk(className="Idle")
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1764, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk,         sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable

我可以从idle.bat 文件以cygstart idle.bat 启动IDLE

我搜索了此错误的解释,但找不到。我还在 cygwin 中添加了 IDLE 作为环境变量。当我执行printenv 时,它显示为一个环境变量。以防万一这是问题所在,我尝试了两个环境变量:

idle=C:\Python27\Lib\idlelib\idle.bat PATH = cygdrive/c/Python27/Lib/idlelib

我还安装了 cygwin IDLE 软件包。

可能是什么问题?

【问题讨论】:

【参考方案1】:

尝试设置 DISPLAY 环境变量

导出显示=:0.0

并确保您正在运行 cygwin-x 服务器(即 Xwin 服务器)

您可以将导出添加到您的 .bash_rc 文件中,以便在每次启动 cygwin 时设置它。

【讨论】:

它给了我另一个关于couldn't connect to display "0:0" 的错误我如何确保cygwin-x服务器正在运行?谢谢@ben 如果您已安装,只需单击开始菜单并搜索 Xwin Server 即可打开它。注意:您可以关闭弹出窗口,它仍在运行,至少在我的盒子上。如果您没有安装它,您应该前往x.cygwin.com 并阅读如何安装它。【参考方案2】:

chaps提供的答案完全解决了我的问题。 (我在 Windows 10 上。)我使用 Cygwin 安装程序(“从 Internet 安装”选项)通过从顶部的下拉菜单中选择“完整”(而不是默认的“待处理”)选项来更新我现有的 Cygwin 安装Cygwin 安装程序的左侧,仅安装包 xorg-server、xinit、xorg-docs 和 xlaunch。 (我对任何远程功能不感兴趣,只对使用 tkinter 和 python3 来执行诸如显示文件对话框控件之类的操作。)我在我的任务栏中放置了 xlaunch 的快捷方式并使用其默认设置启动它,然后添加了 export DISPLAY=:0.0到我的环境并运行 tkinter 测试套件。它工作得很好。

【讨论】:

以上是关于从 Cygwin 启动 python IDLE 时 Tkinter 中的 tcl_error的主要内容,如果未能解决你的问题,请参考以下文章

idle如何从三个点变为

Python IDLE没有在Windows 7上启动

从 cygwin shell 启动时写入 stdout 的位置在哪里,没有重定向

Python学习第一二章

如何让cygwin启动时进入指定目录

IDLE 不在 python 3.0 中启动