【问题标题】:Porting my PyGtk 3 app to Win32将我的 PyGtk 3 应用程序移植到 Win32
【发布时间】:2012-10-20 09:47:10
【问题描述】:

我最近使用 Anjuta 使用 pygtk 制作了我的第一个应用程序。它在Linux下运行良好,是时候分享给亲朋好友了。我在 Windows 上安装了 Python、pygtk 和 Gtk 一体化软件包(Cairo、pyGobject 等)并尝试运行它。

我说self.builder.add_from_file(UI_FILE)时出错

在代码中挖掘了一下,我发现我的 UI_FILE 包含

<!-- interface-requires gtk+ 3.0 -->

我的 python 控制台说:

>>> import gtk
>>> gtk.gtk_version
(2, 22, 1)

据我所知,我在我的 win32 机器上安装了最新版本的 Gtk。现在我不知道如何解决这个问题: 重新设计接口以兼容gtk2.22.1? (那怎么办?) 使用我的 linux 发行版中的交叉编译器? (以什么复杂性/稳定性为代价?)

感谢您的宝贵时间,您的回答。

【问题讨论】:

  • 这绝对相关,它确认问题来自win32 - Gtk3兼容性。但我仍然不知道如何使它工作。

标签: python windows linux gtk pygtk


【解决方案1】:

从您的界面中删除所有与 GTK 2 不兼容的小部件(例如GridOverlay 等)。如果您有 3.8 系列的 Glade 版本,我认为您可以自动检查哪些小部件是转到项目属性并选择 GTK 2.24 作为目标版本。然后有一个名为“验证小部件版本和弃用”的按钮,您可以单击该按钮以确保您使用的所有小部件都适用于该版本。

顺便说一句,2.22.1 绝对不是 Windows 的最新版本。它是 2.24.7 或 .8。

【讨论】:

    【解决方案2】:

    对此的最新答案是,您可以在 Windows 上使用 Gtk3,使用最近的 PyGobject packages downloadable here

    然后,而不是使用以下(加载 pygtk):

    import gtk
    

    你应该使用

    from gi.repository import Gtk
    

    如果你的代码曾经依赖 pygtk,你有以下选择(见the porting guide

    • 使用模块 pygtkcompat(它允许您继续支持 Gtk 2.x)
    • 移植到自省方法,可以通过上述移植指南中提供的脚本pygi-convert.sh(仅包含大量正则表达式替换)自动完成

    【讨论】:

      猜你喜欢
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      相关资源
      最近更新 更多