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 :

Rafraichissement de l'interface


Sujet :

GTK+ avec Python

  1. #1
    Invité
    Invité(e)
    Par défaut Rafraichissement de l'interface
    Bonjour à tous,

    J'ai quelques petits soucis avec pyGtk, je voulais simplement faire une toute petite appli (une sorte de chronomètre ou de compte à rebours plus exactement) mais j'ai un soucis de mise à jour de l'interface.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    #! /usr/bin/python
     
    import sys
    try:
    	import pygtk
    	pygtk.require ("2.0")
    	import gtk
    	import gtk.glade
    except:
    	sys.exit(1)
     
     
    import time
    import threading
     
     
     
    class WinMain:
     
    	def __init__ (self):
    		#Set the Glade file
    		self.gladefile = "winmain.glade"  
    		self.wTree = gtk.glade.XML(self.gladefile) 
     
    		self.txt_time = self.wTree.get_widget("txt_time")
    		self.lbl_timeLeft = self.wTree.get_widget("lbl_timeLeft")
     
    		#Create our dictionay and connect it
    		dic = { "on_btn_launch_clicked" : self.on_btn_launch_clicked,
    			 	"on_win_main_destroy" : self.on_win_main_destroy }
    		self.wTree.signal_autoconnect(dic)
     
     
    	def on_btn_launch_clicked (self, event):
     
    		self.t = threading.Thread (None, self.timeLoop, None, (), {})
    		self.t.start()
     
     
     
    	def on_win_main_destroy (self, event):
    		try:
    			self.t.stop()
    		except:
    			pass	
     
    		gtk.main_quit()
     
     
    	def timeLoop (self):
    		cpt = 0
    		while (cpt < 5):
    			print cpt
    			self.lbl_timeLeft.set_text (str(cpt))
     
    			cpt = cpt + 1
    			time.sleep(1)
     
    		print "thread fini"
     
     
     
    if __name__ == "__main__":
    	wm = WinMain()
    	gtk.main()
    Mon problème est que l'interface n'est bien sur pas remise à jour quand je clique sur le bouton btn_launch. J'ai essayé de déporter le traitement dans un thread, le problème c'est que ce thread ne se lance qu'une fois la fenêtre fermée. Une fois que cette fenêtre est fermée, le thread se lance bien mais ça ne sert pas à grand chose du coup (vu que ce code est censé mettre à jour mon interface) . Je n'ai jamais eu à traiter ce genre de problèmes en python et du coup je ne sais pas trop dans quelle direction partir, si quelqu'un pouvait me filer un petit coup de main, ce serait sympa

    Cdlt,


    PierreAd

  2. #2
    Membre Expert
    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
    Par défaut
    En C, il y a une fonction g_timeout_add qui permet d'appeler à intervalle régulier une fonction, il doit y avoir un équivalent en python

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    En C, il y a une fonction g_timeout_add qui permet d'appeler à intervalle régulier une fonction, il doit y avoir un équivalent en python
    J'ai pu retrouver l'équivalent de la fonction que tu citais ! Il s'agit de la méthode gobject.timeout_add (interval, fonction).

    Merci beaucoup teuf

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

Discussions similaires

  1. Process de rafraichissement d'une interface
    Par Ximenjun dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 02/09/2009, 14h54
  2. Réponses: 12
    Dernier message: 18/12/2008, 09h57
  3. Réponses: 9
    Dernier message: 30/03/2008, 20h30
  4. Problème de rafraichissement d'une interface SWT
    Par franckB dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 20/02/2008, 15h43
  5. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07

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