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.
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)
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(). 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
Partager