#1 Le 27/08/2007, à 18:38
- dedesite
[pythonGTK/Glade] Problème de débutant
Bonjour à tous,
aujourd'hui j'ai découvert l'éditeur d'interface Glade pour Gnome et j'ai décidé de m'y mettre pour voir ce que ça donnait.
En cherchant un peu des tutos sur son utilisation (notamment avec python que j'aimerai découvrir aussi) je suis tombé sur ce site :
http://daniel.coquette.free.fr/dotclear/index.php/post/2006/12/11/Creer-des-interfaces-graphique-avec-PyGTK-et-Glade
J'ai suivis son tuto (bien que j'ai une version plus récente de Glade) mais malheureusement mon appli python ne veux pas se lancer... Il ne se passe rien quand je l'execute...
Voici le code de l'appli pyHelloWorld.py (j'ai juste changé les noms de fichiers et de fonction) :
#!/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 = "HelloWorld.glade"
self.wTree = gtk.glade.XML(self.gladefile)
#Create our dictionay and connect it
dic = { "on_btnClick_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()
Voici le code XML généré par Glade HelloWorld.glade :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.3.4 on Mon Aug 27 19:16:43 2007 -->
<glade-interface>
<widget class="GtkWindow" id="winHelloWorld">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="title" translatable="yes">HelloWorld</property>
<child>
<widget class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkLabel" id="lblClick">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Cliquez sur le bouton</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="btnClick">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Click Me!!</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_btnClick_clicked"/>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>
Comme vous pouvez le voir, vraiment du très basique... Le truc c'est que je ne m'y connais pas du tout en Python et je ne sais donc pas comment bien utiliser ce langage.
C'est à dire que je ne sais pas comment debuggé, puis je connais pas les "trucs connus" pour planter ou les "trucs qu'on oublis tout le temps de faire et qui font que ça marche pas".
A mon avis, le problème ne viens pas du code mais plutôt de ma façon de l'utiliser, voici ce que je tappe dans mon terminal pour lancer l'application :
sudo python pyHelloWorld.py
Ca ne fait rien (enfin ça n'écris rien mais je peu plus rien écrire dans le terminal), puis quand je fais CTRL+C, voici ce qu'il m'affiche :
Traceback (most recent call last):
File "pyHelloWorld.py", line 35, in <module>
gtk.main()
KeyboardInterrupt
Je suis débutant en programmation sous linux, donc merci d'être indulgent et merci aussi pour votre future aide .
A+
dede
Dernière modification par dedesite (Le 27/08/2007, à 18:39)
Hors ligne
#2 Le 28/08/2007, à 07:21
- bipede
Re : [pythonGTK/Glade] Problème de débutant
Ton fichier glade n'est pas complet...
il te manque la ligne
<property name="visible">True</property>
pour le widget gtkWindow, et c'est ce qui fait que la fenêtre n'apparaît pas quand tu lance l'application.
De plus, dans ton script python, tu as décrit au sein du dictionnaire des signaux, un signal destroy pour une fenêtre appelée MainWindow et qui n'existe pas dans ton fichier glade, la fenêtre principale qui y est décrite s'appelant winHelloWord.
J'ai l'impression que ton fichier glade est un fichier bricolé.
Je me trompe ?
Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.
Mon site: Les contributions du bipède
Hors ligne
#3 Le 28/08/2007, à 10:11
- dedesite
Re : [pythonGTK/Glade] Problème de débutant
pour le widget gtkWindow, et c'est ce qui fait que la fenêtre n'apparaît pas quand tu lance l'application.
De plus, dans ton script python, tu as décrit au sein du dictionnaire des signaux, un signal destroy pour une fenêtre appelée MainWindow et qui n'existe pas dans ton fichier glade, la fenêtre principale qui y est décrite s'appelant winHelloWord.
J'ai l'impression que ton fichier glade est un fichier bricolé.
Je me trompe ?
Ok, merci pour l'info, c'est bizarre que la propriété visible ne soit pas mis a True d'office... Mon fichier glade a été créé direct avec Glade 3, il devrait mettre la propriété visible a true au moins.
Pour la MainWindow, c'est moi qui avait changer le nom dans glade mais j'ai oublié de le changer dans le code (vu qu'il provenait de l'exemple).
En tout cas merci de ton aide, je vais tester ça sur le champs .
A+
dede
EDIT : Ca marche!! Merci a toi, bon maintenant j'ai les bases pour faire des progs sous linux si j'ai envis de m'y mettre (j'aurais peut-être pas le temps maintenant mais c'est cool que ça marche )
Dernière modification par dedesite (Le 28/08/2007, à 10:43)
Hors ligne