Ik ben net begonnen aan het leren van Python, en heb met Glade een interface in elkaar gestoken, zoals ook staat beschreven in dit blog artikel. Ik heb eerst zelf een python scriptje proberen te maken, maar toen dat niet lukte heb ik de tutorial exact gevolgd, maar nog steeds werkt het niet.
Wat werkt er niet? Nou, ik doe dit in mn terminal:Maar dan gebeurt er helemaal niets. Ik zie dus geen venster verschijnen, terwijl er wel in mn script een venster gemaakt moet worden. Mijn glade file ziet er zo uit (gemaakt met Glade3 uit de Ubuntu repository's):
Help!? Hoe kan dit, want als ik code letterlijk kopieer van tutorials en howto's, werkt het allemaal niet. Waarschijnlijk zie ik gewoon iets heel stoms over het hoofd, maar hopelijk zien jullie dat.
Ter informatie: verschillende programma's die op python+gtk (met glade files) gebaseerd zijn werken wél (Deluge bijvoorbeeld). Het kan er dus niet aan liggen dat ik een pakketje mis.
Wat werkt er niet? Nou, ik doe dit in mn terminal:
jurian@karlijn:~/Documents/Python/Test$ python test.py
XML:
En dit is mijn python bestandje:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> <!--Generated with glade3 3.0.2 on Sun Oct 22 20:51:59 2006 by jurian@karlijn--> <glade-interface> <widget class="GtkWindow" id="MainWindow"> <property name="title" translatable="yes">Hello World.... Again!</property> <child> <widget class="GtkVBox" id="vbox1"> <property name="visible">True</property> <child> <widget class="GtkLabel" id="label1"> <property name="visible">True</property> <property name="label" translatable="yes">Please click on the button!</property> </widget> </child> <child> <widget class="GtkButton" id="btnHelloWorld"> <property name="visible">True</property> <property name="label" translatable="yes">Click me!</property> <signal name="clicked" handler="on_btnHelloWorld_clicked"/> </widget> <packing> <property name="position">1</property> </packing> </child> </widget> </child> </widget> </glade-interface> |
Python:
Als ik wat debug messages binnen de __init__ van de klasse zet, worden deze allemaal netjes geprint. Ook als ik tussen regel 33 en 34 python iets laat roepen, gaat dat ook goed. Echter blijft python hangen op gtk.main(). 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| #!/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) #Create our dictionay and connect it dic = { "on_btnHelloWorld_clicked" : self.btnHelloWorld_clicked, "on_MainWindow_destroy" : gtk.main_quit } self.wTree.signal_autoconnect(dic) def btnHelloWorld_clicked(self, widget): print "Hello World!" if __name__ == "__main__": hwg = HellowWorldGTK() gtk.main() |
Help!? Hoe kan dit, want als ik code letterlijk kopieer van tutorials en howto's, werkt het allemaal niet. Waarschijnlijk zie ik gewoon iets heel stoms over het hoofd, maar hopelijk zien jullie dat.
Ter informatie: verschillende programma's die op python+gtk (met glade files) gebaseerd zijn werken wél (Deluge bijvoorbeeld). Het kan er dus niet aan liggen dat ik een pakketje mis.