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