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

时间:2017-03-14 09:32:57

标签: python cygwin gtk wxpython

我已从标准wxpython-3.0 repos(64位,Win 7)中为wxpython-2.8安装并试用了python2.7cygwin。然而,当我启动Cygwin X服务器并尝试运行最简单的" Hello World"来自wxPython tutorials的脚本:

# 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是否被破坏或者是否需要其他一些过程?

2 个答案:

答案 0 :(得分:2)

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

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

两者均通过cygwin安装程序安装。 我在cygwin的安装程序中也有python-2-wx2.8,可以通过创建仅包含一行的文件/usr/lib/python2.7/site-packages/wx.pth选择要使用的文件。通过“ import wx”行指定要导入的软件包的相对路径:

wx-3.0-gtk3

wx-2.8-gtk2-unicode

当我使用更高版本(wx-2.8-gtk2-unicode)时,出现与您提到的相同的错误,“断言'GDK_IS_DISPLAY(display)'失败”,但是当我使用wx-3.0-gtk3时,错误消失并且脚本运行正常,我可以在X窗口中看到图形。

答案 1 :(得分:0)

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

startxwin &

export DISPLAY=:0.0

./test.py

我能够使用此序列运行您的测试代码。