IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec Python Discussion :

POO et PYGTK


Sujet :

GTK+ avec Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Par défaut POO et PYGTK
    Je débute dans la programmation Python, et je butte sur ce problème:
    Voici un extrait de programme que j'ai réduit ici pour isoler l'essentiel.
    Le ' programme' fonctionne si je met tout dans la même classe, mais dans l'exemple suivant, ça ne marche pas.
    (Une simple image doit s'afficher!)
    Pourquoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # essais.py
     
    import pygtk
    pygtk.require('2.0')
    import gtk
     
    # Un truc
    class Truc(gtk.Image):
    	def __init__(self):
    		gtk.Image.__init__(self)
    		self=gtk.Image()
    		self.set_from_file("ic1.png")
    		self.show()
     
    #Fenêtre principale
    class PyApp(gtk.Window):
    	def __init__(self):
    		gtk.Window.__init__(self)
    		self.fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
    		self.fenetre.maximize()
    		self.fenetre.set_title("essais")
    		self.fenetre.show()
    		truc=Truc()
    		boiteV=gtk.VBox(homogeneous=False, spacing=0)
    		boiteV.pack_start(truc, expand=False, fill=True, padding=0)
    		self.fenetre.add(boiteV)
    		self.fenetre.show_all()
    	def boucle(self):
    		gtk.main()
     
    if __name__ == "__main__":
        pyApp=PyApp()
        pyApp.boucle()

  2. #2
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    Salut,

    Il y a quelques problèmes au niveau des initialisations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    # -*- coding: utf-8 -*-
    # essais.py
     
    import pygtk
    pygtk.require('2.0')
    import gtk
     
    # Un truc
    class Truc(gtk.Image):
    	def __init__(self):
    		gtk.Image.__init__(self)
    		self.set_from_file("ic1.png")
    		self.show()
     
    #Fenêtre principale
    class PyApp(gtk.Window):
    	def __init__(self):
    		gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
    		self.maximize()
    		self.set_title("essais")
    		truc=Truc()
    		boiteV=gtk.VBox(homogeneous=False, spacing=0)
    		boiteV.pack_start(truc, expand=False, fill=True, padding=0)
    		self.add(boiteV)
    		self.connect('destroy', gtk.main_quit)
    		self.show_all()
    	def boucle(self):
    		gtk.main()
     
    if __name__ == "__main__":
    	pyApp=PyApp()
    	pyApp.boucle()
    Par exemple, la classe Truc était correctement initialisée comme héritant de gtk.Image, mais ensuite tu as remplacé cette instance par une autre avec "self=gtk.Image()", ce qui fait que ce n'est plus la même image que tu déclares avec "truc=Truc()" que celle que tu affiches avec "boiteV.pack_start(...)".

    Il manquait aussi la connexion au signal 'destroy' ; sans elle, le programme ne quitte pas correctement quand tu fermes la fenêtre.


    -

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Par défaut
    merci pour la réponse.
    Il faut que je creuse la question, mais ça fonctionne.
    Je vais enfin pouvoir avancer...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] C'est quoi une classe en claire...???
    Par Spack dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 26/01/2009, 15h53
  2. Réponses: 16
    Dernier message: 06/06/2007, 12h42
  3. Réponses: 13
    Dernier message: 28/08/2004, 18h43
  4. [langage] Pb POO perl
    Par loothoof dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2004, 12h08
  5. lier un cube à un objet (POO)
    Par Hypnos dans le forum OpenGL
    Réponses: 12
    Dernier message: 26/08/2003, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo