2012-10-20 35 views
0

我最近使用Anjuta使用pygtk创建了我的第一个应用程序。它在Linux下运行良好,因此是时候与亲戚朋友分享了。我在Windows上安装了Python,pygtk和Gtk all-in-one包(开罗,pyGobject等)并试图运行它。将我的PyGtk 3应用程序移植到Win32

我有一个错误说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发行版的交叉编译器? (在复杂性/稳定性方面是多少成本?)

谢谢你的时间,并且你的答案。

+0

相关:[gi.repository Windows](http://stackoverflow.com/a/12986596/4279) – jfs

+0

这是绝对相关的,它证实问题来自win32-Gtk3兼容性。但我仍然不知道如何使它工作。 –

回答

0

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

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

0

最新的答案是,您可以在Windows上使用Gtk3,使用最近的PyGobject packagesdownloadable here

然后,而不是使用下面的(它加载的PyGTK):

import gtk 

您应该使用

from gi.repository import Gtk 

如果使用依赖于pygtk的代码,您有以下选择(见the porting guide

  • 使用模块pygtkcompat(它允许你保持支持Gtk 2.x)
  • 端口到内省方法,这可以通过在所述移植指南中可用的脚本来大部分自动化,其中pygi-convert.sh(其仅包含大量正则表达式替换)
相关问题