Mise en place d'un thread qui gère le chronomètre
Bonjour,
J'ai mis en place un chronometre qui s'affiche mais ne veut pas s'arrêter stop_chrono appelé dans une fonction et se tuer, pour quelle raison s'il vous plait?
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
def reset_chrono():
isRunningChrono=False
my_thread_chrono.current(isRunningChrono,tActualTime,tZero)
#my_thread_chrono.stop()
chrono_label['text'] ="00:00:00"
window.update_idletasks()
def stop_chrono():
#global isRunningChrono
global tActualTime
global tZero
global my_thread_chrono
print("StopChrono")
isRunningChrono=False
window.update_idletasks()
my_thread_chrono.current(isRunningChrono,tActualTime,tZero)
for thread in enumerate():
if my_thread_chrono.isAlive():
try:
my_thread_chrono._Thread__stop()
except:
print(str(my_thread_chrono.getName()) + ' could not be terminated')
#time.sleep(5)
#window.update_idletasks()
#my_thread_chrono.stop()
class Thread_Chrono(threading.Thread):
def __init__(self, name):
threading.Thread.__init__(self)
self.name = name
def current(self, test,tActual,tZ):
global isRunningChrono
#global tActualTime
global tZero
print(tActual)
print(tZ)
self.value = test
isRunningChrono=self.value
tActualTime=tActual
print("isRunningCurrent",isRunningChrono)
tZero=tZ
pass
def run(self):
global isRunningChrono #made global here
#global tActualTime
global tZero
while True:
#print("isRunningChrono=%b",isRunningChrono)
while isRunningChrono:
print("isRunning enter")
tActualTime=time.time()-tZero
tiTuple=time.gmtime(tActualTime)
reste=tActualTime-tiTuple[3]*3600.0-tiTuple[4]*60.0-tiTuple[5]*1.0
resteS=("%.2f" % reste)[-2::]
tt=time.strftime("%H:%M:%S",tiTuple)
chrono_label['text'] =""+tt
window.update_idletasks()
print tt
time.sleep(1)
#conditionThread.release()
my_thread_chrono=Thread_Chrono("myThread_name_Chrono")
my_thread_chrono.current(isRunningChrono,tActualTime,tZero)
my_thread_chrono.start()
def myFonction():
stop_chrono() |
Ce que je ne comprend pas c'est que le thread doit être démarrer dans le process principal et non dans une fonction def, car je souhaite démarrer le chrono lors de l'appel d'une fonction et s'arrêter après un traitement précis?
Merci d'avance.