2016-11-16 31 views
0

こんにちは、私はスレッドを停止しようとして苦労している、私はエラーが発生しないが、私のスレッドは停止しません。私はいくつかの助けに感謝します。私は私のボタンをオフにしたときスレッドを停止する必要があります私の関数levを呼び出すボタンを持っています。 thread2以来スレッドを停止する方法 - Python 3

exitFlag = 0 

def levt(): 

    print("Executando") 
    while ((app.frames[Acionamento].var.get()==2) and exitFlag==0): 
     print("o thread") 
     t1fvm = time.time() #Tempo final luminária esquerda 
     n1mv = (t1fvm-t1ivm)*0.6 
     global levm 
     levm = levm+n1mv 
     print(levm) 




def lev(): 

    app.frames[Acionamento].esquerdaFrame.vendasFrame.luminaria_esquerdaFramev.label6["text"] = "Luminária A" 
    global exitFlag 
    global thread2 
    thread2 = Thread(target=levt)  
    if GPIO.input(17): 
     GPIO.output(17, GPIO.LOW) 
     app.frames[Acionamento].esquerdaFrame.vendasFrame.luminaria_esquerdaFramev.lev_button["text"]="Desligado" 
     if thread2.isAlive(): 
      exitFlag = 1 

    else: 
     global t1ivm 
     t1ivm = time.time() 
     GPIO.output(17, GPIO.HIGH) 
     app.frames[Acionamento].esquerdaFrame.vendasFrame.luminaria_esquerdaFramev.lev_button["text"]="Ligado" 
     thread2.start() 

答えて

0

常にFalseexitFlagが1によって実行中のスレッドの意志を設定されることはありませんようにif thread2.isAlive()が常に評価されます、lev()内部の新しいスレッドで開始されます。以下のコードの一部をフォロー決して止めることはありません。 thread2.start()の前の行にする

移動thread2 = Thread(target=levt)

def lev(): 
    ... 
    #thread2 = Thread(target=levt) # moved to line before thread2.start() 
    if GPIO.input(17): 
     ... 
    else: 
     ... 
     thread2 = Thread(target=levt) 
     thread2.start() 
+0

おかげACW、私はそれを持って、それを解決しました。もう1つ質問私は秒を時間:分:秒に変換できますか? – armf1993

+0

'time.time()'によって返される値は 'seconds'ですか? 'Hours:Minutes:Seconds'は秒の時間または経過時間の表示を意味しますか? – acw1668

+0

time.time()は秒を返しますか、あまりにも近いですか?あなたは私に例を教えていただけますか? – armf1993

関連する問題