Affichage texte dans un text buffer (Thread)
Bonjour à tous,
j'aimerais afficher un message (et le mettre à jour) dans un text buffer toutes les secondes... un message du type :
Démarrage dans 10 secondes
Démarrage dans 9 secondes
Démarrage dans 8 secondes
Démarrage dans 7 secondes
J'ai donc défini une classe GuiDisplay :
Code:
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
|
class GuiDisplay (Thread) :
def __init__(self, displayType, textBuffer, text, time):
Thread.__init__(self)
self.displayType = displayType
self.textBuffer = textBuffer
self.text = text
self.time = time
def run(self):
if (self.displayType == DisplayType.PROGRESS) :
elapsed_time = 1
self.time = self.time + 1
startIt = self.textBuffer.get_end_iter()
length = len(message)
while (elapsed_time < self.time) :
progress = int(elapsed_time / self.time * 100)
message = self.text % (progress)
print("PROGRESS...")
self.textBuffer.insert(startIt, message)
endIt = self.textBuffer.get_end_iter()
time.sleep(1)
elapsed_time = elapsed_time + 1
self.textBuffer.delete(startIt, endIt)
return None
if (self.displayType == DisplayType.SUMMARY) :
elapsed_time = 1
self.time = self.time + 1
startIt = self.textBuffer.get_end_iter()
while (elapsed_time < self.time) :
message = self.text % (self.time - elapsed_time)
length = len(message)
self.textBuffer.insert(startIt, message)
endIt = self.textBuffer.get_end_iter()
print("SUMMARY : " + message + "\n")
time.sleep(1)
elapsed_time = elapsed_time + 1
self.textBuffer.delete(startIt, endIt)
return None
class DisplayType :
PROGRESS=1
SUMMARY=2 |
Malheureusement ça ne fonctionne pas... le thread est bien lancé (rien ne s'affiche dans la zone de texte) mais l'interface graphique freeze et je dois justement pouvoir cliquer sur le bouton Annuler.
Je créé le Thread comme ceci :
Code:
1 2 3 4
|
self.summaryThread = GuiDisplay(DisplayType.SUMMARY, self.textBuffer, message, self.waiting_seconds)
self.summaryThread.start()
self.summaryThread.join() |
Quelqu'un pourrait m'expliquer ce qui ne va pas? :?