【问题标题】:Running wxpython app in cygwin/X在 cygwin/X 中运行 wxpython 应用程序
【发布时间】:2017-08-04 13:37:42
【问题描述】:

我已经从标准的 cygwin 存储库(64 位,Win 7)安装并尝试了 wxpython-3.0wxpython-2.8python2.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 变量设置为:0 (export DISPLAY=:0) 并对应于启动的 X 服务器。

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

【问题讨论】:

  • 您是否按照此文档中 gtk 和 cygwin 的构建说明进行操作:wxpython.org/BUILD-2.8.html
  • 不,我已从 cygwin 存储库中获取所有数据包。还没有从 src 构建任何东西。

标签: python cygwin gtk wxpython


【解决方案1】:

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

startxwin &

export DISPLAY=:0.0

./test.py

我能够让您的测试代码按照这个序列运行。

【讨论】:

  • 不幸的是,这给出了同样的错误:-(。所有来自 cygwin 的包?
  • @fnokke - 我刚刚抓取了 python-wx-tools 并让它抓取它想要的任何其他依赖项。看起来那些包括 python-wx2.8 和相同版本的相关 libwx 库。当使用xinit 启动windows 系统时,它启动了一个显示初始xterm 的大窗口。运行 test.py 给了我与您看到的类似的错误。当我使用startxwin 时,它以多窗口模式启动,python 代码运行良好。
  • 奇怪我尝试了同样的事情,但我仍然得到错误。我首先认为这可能是因为实际上我一直在尝试 python-wx3.0 但我尝试了 python-wx2.8 并得到了同样的错误。
  • @fnokke - 不确定它有多大用处,但我检查了我的 python 版本,它是 Python 2.7.12。如果我回到使用xinit 并查看错误,我的第一个错误显示为 `(process:14564): Gdk-CRITICAL **: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed,我相信这有点不同从你看到的那个?让我知道您是否希望我进行其他试验,或挖掘其他信息。
  • 奇怪。我有一位同事(运行本机 Windows 7)仔细检查,在您的示例中他也遇到了与我相同的错误。 python版本是一样的。你还运行 cygwin-x86_64?我想知道还有什么可能导致这种差异......
【解决方案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)' failed”,但是当我使用 wx-3.0-gtk3 时,错误消失并且脚本运行良好,我可以在 X 窗口中看到图形。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多