2012-10-20 33 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(其僅包含大量正則表達式替換)
相關問題