2011-09-04 15 views
9

私はPythonプログラムに入れたい隙間にGUIを作成しました。私は私のグレードファイル(http://www.pygtk.org/articles/pygtk-glade-gui/Creating_a_GUI_using_PyGTK_and_Glade.htm)でロードするためにオンラインで見つけたチュートリアルから指示を適用していました。私が問題を抱えていたら、そのチュートリアルと同じものを呼び出し、コードを貼り付けるという基本的なもの(1つのボタン)を試しましたが、それでも機能しませんでした。私はまた、( "self.wTree = gtk.glade.XML(gladefile、 windownameの代わりに)、そして私のものと同等のものを実装し、それを修正しませんでした。私は間違いなくpygtkの作業をしています。以前はgladeを使わずに何かを作っていました。私は取得していますエラーは次のとおりです。gladeインターフェイスをPythonに入れようとしています

/usr/share/themes/NOX/gtk-2.0/gtkrc:233: Murrine configuration option "gradients" 
is no longer supported and will be ignored. 

(helloWorld.py:9804): libglade-WARNING **: Expected <glade-interface>. Got  
<interface>. 

(helloWorld.py:9804): libglade-WARNING **: did not finish in PARSER_FINISH state 
Traceback (most recent call last): 
File "helloWorld.py", line 31, in <module> 
hwg = HellowWorldGTK() 
File "helloWorld.py", line 22, in __init__ 
self.wTree = gtk.glade.XML(self.gladefile) 
RuntimeError: could not create GladeXML object 

私はXubuntuの11.04を実行していますよ。 Murrineの設定は、gtkアプリケーションが起動したときに表示されますが、関連性がある場合に備えて含めました。チュートリアルから取り上げたコードはありますが、動作しません。

#!/usr/bin/env python 

import sys 
try: 
    import pygtk 
    pygtk.require("2.0") 
except: 
    pass 
try: 
    import gtk 
    import gtk.glade 
except: 
    sys.exit(1) 

class HellowWorldGTK: 
"""This is an Hello World GTK application""" 

def __init__(self): 

    #Set the Glade file 
    self.gladefile = "PyHelloWorld.glade" 
    self.wTree = gtk.glade.XML(self.gladefile) 

    #Get the Main Window, and connect the "destroy" event 
    self.window = self.wTree.get_widget("MainWindow") 
    self.window.show() 
    if (self.window): 
     self.window.connect("destroy", gtk.main_quit) 


if __name__ == "__main__": 
    hwg = HellowWorldGTK() 
    gtk.main() 
+0

これは、あなたの質問に答える:http://stackoverflow.com/questions/2668618/python-glade-could-not-create-gladexml-object – dumbmatter

+0

ありがとうございました:)。それは今働く。 – Harpy

+0

このリンクを参照してくださいhttp://techaffairs.com.br/corrigindo-problema-libglade%E2%88%92warning-expected-glade%E2%88%92interface-got-interface/この記事ではあなたができるでしょうコード例を得るために、このポストはポルトガル語で書かれています。 –

答えて

10

このコードを試してみてください。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import pygtk 
pygtk.require("2.0") 
import gtk 
import gtk.glade 

class HellowWorldGTK: 

    def __init__(self): 
     self.gladefile = "helloworld.glade" 
     self.glade = gtk.Builder() 
     self.glade.add_from_file(self.gladefile) 
     self.glade.connect_signals(self) 
     self.glade.get_object("MainWindow").show_all() 

    def on_MainWindow_delete_event(self, widget, event): 
     gtk.main_quit() 

if __name__ == "__main__": 
    try: 
     a = HellowWorldGTK() 
     gtk.main() 
    except KeyboardInterrupt: 
     pass 

を忘れないでください:グレイドで を、I以来

+0

ありがとう、それは私がやったことです(すでに、それは他の人の参照のために良いでしょう:))。 – Harpy

4

PyHelloWorld.gladeが間違っています。正しいGladeアプリケーションで作成したことを確認してください。インストールして使用できるGlade2およびGlade3アプリケーションがあります。ファイルをダウンロードした場合は、正しいことを確認してください。エラーメッセージにはすべてが表示されます:

XMLファイルにはinterfaceタグがありますが、PyGTKライブラリにはglade-interfaceタグが必要です。

+0

ありがとう、それは今働く:)。 – Harpy

1

"GTKBuilder"(ない "libglade")にファイルの "環境設定" を編集しますこの問題を解決するには、ここではPython 2.7コードを使用します。

Libglade

# needs libglade (not for gtk-builder) 
import pygtk 
pygtk.require("2.0") 
import gtk 
import gtk.glade 

gladefile = "test-libglade.glade" 
wTree = gtk.glade.XML(gladefile) 
window = wTree.get_widget("MainWindow") 
if (window): 
    window.connect("destroy", gtk.main_quit) 

window.show_all() # must have! 
gtk.main() 
GtkBuilderの場合

:グレイドで

# needs gtk-builder (not for libglade) 
import pygtk 
pygtk.require("2.0") 
import gtk 

gladefile = "test-gtkbuilder.glade" 
wTree = gtk.Builder() 
wTree.add_from_file(gladefile) 
window = wTree.get_object("MainWindow") 
if (window): 
    window.connect("destroy", gtk.main_quit) 

window.show_all() # must have! 
gtk.main() 

、あなただけの、ウィンドウを追加MainWindowそれを呼び出すと、各フォーマットのための上記のように、それぞれのファイル名を持つ2つのバージョンを保存することができます。これらのスニペットは反復的にそれらと一緒に動作するはずです。

希望すると、誰かに役立ちます。
乾杯!

0

これは完全に機能します。

#!/usr/bin/python 
import pygtk 
pygtk.require("2.0") 
import gtk 
import gtk.glade 
class SubinsWindow: 
def __init__(self): 
    self.gladefile = "game.glade" 
    self.glade = gtk.Builder() 
    self.glade.add_from_file(self.gladefile) 
    self.glade.connect_signals(self) 
    self.win=self.glade.get_object("window1") # Window Name in GLADE 
    self.win.show_all() 

if __name__ == "__main__": 
a = SubinsWindow() 
gtk.main() 
関連する問題