运行 cygwin/X 中的 wxpython 应用程序

Running wxpython app in cygwin/X

我已经从标准 cygwin 存储库(64 位,Win 7)安装并尝试了 wxpython-3.0wxpython-2.8 for python2.7。但是,当我启动 Cygwin X 服务器并尝试 运行 来自 wxPython tutorials:

的最简单的 "Hello World" 脚本时
# test.py
import wx

app = wx.App(False)  # Create a new app, don't redirect stdout/stderr to a window.
frame = wx.Frame(None, wx.ID_ANY, "Hello World") # A Frame is a top-level window.
frame.Show(True)     # Show the frame.
app.MainLoop()

我得到一个 Gtk-WARNING **: Screen for GtkWindow not set,它最终以 segmentation fault 结尾。

DISPLAY变量设置为:0export DISPLAY=:0)对应启动的X服务器。

wxPython 是否在 cygwin 中损坏或在使用 wxPython 启动脚本之前是否需要一些其他程序?

尝试使用 startxwin 命令而不是 xinit 启动 X 服务器。

startxwin &

export DISPLAY=:0.0

./test.py

我能够得到你的测试代码运行这个序列。

我对此进行了测试并使其适用于我的 cygwin64 安装。我用了

  • python v2.7.14 和
  • cygwin 包 python-2-wx 版本 3.0.2.0-3

两者都是通过 cygwin 安装程序安装的。 我的 cygwin 安装中也有 python-2-wx2.8,我可以 select 通过创建文件 /usr/lib/python2.7/[=29= 来使用哪个.pth 仅包含一行指定要导入的包的相对路径 "import wx" 行:

wx-3.0-gtk3

wx-2.8-gtk2-unicode

当我使用后者 (wx-2.8-gtk2-unicode) 时,我得到了与您提到的相同的错误,"assertion 'GDK_IS_DISPLAY (display)' failed",但是当我使用 wx-3.0-gtk3 时,错误消失并且脚本运行很好,我可以在我的 X-window.

中看到图形