J'ai créé une interface graphique simple dans Glade 3.6.7 et j'essaie de l'importer en Python. Chaque fois que j'essaie de le faire, je l'erreur suivante:Python Glade n'a pas pu créer l'objet GladeXML
(queryrelevanceevaluation.py:8804): libglade-WARNING **: Expected <glade-interface>. Got <interface>.
(queryrelevanceevaluation.py:8804): libglade-WARNING **: did not finish in PARSER_FINISH state
Traceback (most recent call last):
File "queryrelevanceevaluation.py", line 17, in <module>
app = QueryRelevanceEvaluationApp()
File "queryrelevanceevaluation.py", line 10, in __init__
self.widgets = gtk.glade.XML(gladefile)
RuntimeError: could not create GladeXML object
Mon Python code:
#!/usr/bin/env python
import gtk
import gtk.glade
class QueryRelevanceEvaluationApp:
def __init__(self):
gladefile = "foo.glade"
self.widgets = gtk.glade.XML(gladefile)
dic = {"on_buttonGenerate_clicked" : self.on_buttonGenerate_clicked}
self.widgets.signal_autoconnect(dic)
def on_buttonGenerate_clicked(self, widget):
print "You clicked the button"
app = QueryRelevanceEvaluationApp()
gtk.main()
Et le fichier foo.glade:
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="windowRelevanceEvaluation">
<property name="visible">True</property>
<property name="title" translatable="yes">Query Result Relevance Evaluation</property>
<child>
<object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="labelQuery">
<property name="visible">True</property>
<property name="label" translatable="yes">Query:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="padding">4</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
</object>
<packing>
<property name="padding">4</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frameSource">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<object class="GtkHButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<child>
<object class="GtkRadioButton" id="radiobuttonGoogle">
<property name="label" translatable="yes">Google</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="radiobuttonBing">
<property name="label" translatable="yes">Bing</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="radiobuttonBoden">
<property name="label" translatable="yes">Boden</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="radiobuttonCSV">
<property name="label" translatable="yes">CSV</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="labelFrameSource">
<property name="visible">True</property>
<property name="label" translatable="yes"><b>Source</b></property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkHBox" id="hbox3">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="labelResults">
<property name="visible">True</property>
<property name="label" translatable="yes">Number Results:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="spinbuttonResults">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
</object>
<packing>
<property name="padding">4</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="labelFrameResults">
<property name="visible">True</property>
<property name="label" translatable="yes"><b>Results</b></property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="padding">2</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttonGenerateResults">
<property name="label" translatable="yes">Generate!</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
foo.glade et la Au-dessus de script Python sont dans le même répertoire, et j'ai essayé d'utiliser un chemin qualifié complet, mais toujours la même erreur (je suis certain que le chemin est correct!).
Des idées?
Cheers,
Pete
Comment ressemble exactement gladefile? Est-ce un chemin absolu? Êtes-vous sûr que votre programme peut y accéder? – joaquin
J'ai essayé un chemin absolu et juste "foo.glade" et la même chose s'est produite. Il ne devrait pas y avoir d'autres problèmes pour accéder au fichier, il n'y a pas de restrictions spéciales sur les fichiers et je ne l'ai pas touché depuis que j'ai appuyé sur le bouton Enregistrer dans Glade. – Peter