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 :

cacher des widget


Sujet :

GTK+ avec Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut cacher des widget
    Bonjour,

    J'utilise pyGTK pour mes application graphiques et j'ai un petit problème pour le masquage et le réaffichage de fenêtres. Voici ce que je voudrais faire. Créer une fenêtre avec un bouton "cache moi" qui, lorsqu'on appuie dessus, cache la fenêtre pendant une seconde...voici mon code :

    ####################################################
    import gtk,time

    fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
    bouton = gtk.Button("CACHE MOI")

    def cache(widget):
    fenetre.hide_all()
    time.sleep(1)
    fenetre.show_all()
    fenetre.connect("destroy",gtk.main_quit)
    bouton.connect("clicked",cache)
    fenetre.add(bouton)
    bouton.show()
    fenetre.show()
    gtk.main()
    ####################################################

    Le probème est que la fenêtre ne se cache qu'après le time.sleep(1)... j'ai remarqué ça en enlevant la ligne fenetre.show_all().

    Comment résoudre ce problème ?

    Vince
    OS : Fedora 9
    machine : IBM thinkpad

  2. #2
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut, (et bienvenue !)

    L'affichage n'est pas réactualisé à l'intérieur de ta fonction ; il faut ajouter une commande du genre "gtk.main_iteration()" pour forcer le programme à prendre en compte la modification de l'affichage.

    Tu peux aussi utiliser une fonction comme "gobject.timeout_add(...)" qui a l'avantage de ne pas bloquer complètement le programme pendant une seconde (elle permet de rendre la main à gtk.main() pendant le temps spécifié).


    PS : pour afficher ton code sur le forum, tu peux aussi utiliser les balises CODE, c'est plus "propre"

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Tu devrais remplacer le sleep par un g_timeout_add (je me rappelle plus du nom exact de cette fonction en python). Ca permet à gtk+ de continuer à fonctionner pendant que t'attends, et au bout de la seconde, un callback est appelé dans lequel tu peux réafficher ta fenêtre

Discussions similaires

  1. Cacher des objets grâce à l'Objet TreeView
    Par The_Warlord dans le forum Composants VCL
    Réponses: 2
    Dernier message: 08/11/2004, 09h50
  2. Besoin d'aide : afficher / cacher des layers
    Par mickeliette dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 21/10/2004, 11h03
  3. [C#] Cacher des onglet(s)
    Par Jfrancois57 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/04/2004, 23h17
  4. Comment cacher des propriétés dans un nouvel objet ?
    Par Pedro dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/10/2003, 18h53
  5. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19

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