【问题标题】:"NotImplementedError: wxGCDC is not available on this platform" in wxPythonwxPython 中的“NotImplementedError:wxGCDC 在此平台上不可用”
【发布时间】:2015-04-20 18:32:48
【问题描述】:

我使用以下配置在 xfce4 桌面环境的 linux 上从源代码安装了 wxPython 2.8.12.1:

../configure --prefix=/opt/wx/2.8 --build=i686-pc-linux --disable-precomp-headers --without-opengl --enable-graphics_ctx

结果我得到了以下错误:

dc: <wx._gdi.BufferedPaintDC; proxy of <Swig Object of type 'wxBufferedPaintDC *' at 0x5e3550> >
Traceback (most recent call last):
  File "gra.py", line 15, in OnPaint
    gc = wx.GCDC(dc)
  File "/opt/staff/wxPython-src-2.8.12.1/wxPython/wx/_gdi.py", line 6068, in __init__
    _gdi_.GCDC_swiginit(self,_gdi_.new_GCDC(*args))
NotImplementedError: wxGCDC is not available on this platform.

在这行代码的执行过程中:

gc = wx.GCDC(dc)

有什么问题?如何让 wxGCDC 在我的平台上可用?

不幸的是我必须从源代码安装 wxPython(不能使用这个库的预编译版本)。

【问题讨论】:

  • 我不知道答案,但你真的应该构建 wxPython 3.0 而不是 2.8,尤其是当你自己构建它时。
  • 不,我不能使用 wxPython 3.0,因为没有向后兼容 2.8 版本。如果我使用 wxPython 2.8,我将不得不重写我的应用程序的某些部分。
  • @MindMixer,2.8 已经很老了,也许是时候升级到更新版本了?根据您的应用程序,您甚至可能想尝试使用 wxPython Phoenix。

标签: python linux wxpython wxwidgets


【解决方案1】:

如果 wxGraphicsConext 不包含在 wxWidgets 构建中,则 wxGCDC 将不可用,并且需要在构建 wxWidgets 时在配置选项中将其打开。 (而且,IIRC,如果没有安装某些依赖库,它可能会再次自动关闭。)所以检查你的 wxWidgets 构建,并观察 configure 的输出以确保启用图形上下文选项。如果您不自己构建它,您可能需要考虑这样做。

我还建议您切换到 wxPython 3.0.x(经典)。它主要与 2.8.12 兼容,并且不需要对代码进行很多更改。此外,3.0.x 有大量的修复和添加,是即将到来的新凤凰版 wxPython 的一个很好的垫脚石。

【讨论】:

  • 糟糕,我刚刚仔细查看了您的消息,发现您正在运行配置,并且您正在启用图形上下文。不过,您仍然需要仔细查看输出并验证它是否实际启用,如果没有,为什么。还要确保 wxPython 构建使用的是您构建的 wxWidget,而不是其他可能已经安装的。
  • 我检查了配置输出:检查 --enable-graphics_ctx... 是的
  • 我删除了 /opt/wx/2.8 并再次执行 make install。同样的问题:(
  • 我也是这样查的:nm -D /opt/wx/2.8/lib/libwx_gtk2u_core-2.8.so | grep wxGCDC 得到了很多匹配结果
  • 您在配置输出中看到有关 Cairo 的任何内容吗? (如“找不到开罗图书馆”或“开罗图书馆太旧”)
猜你喜欢
  • 2019-06-08
  • 2013-10-11
  • 2015-04-02
  • 2018-10-17
  • 2017-07-16
  • 2019-01-09
  • 2018-06-30
  • 2018-03-30
相关资源
最近更新 更多