-1

私のロジックに起因するいくつかのPythonコードに問題があります。UI内でボタンクリックを介して呼び出されるメイン関数があります。この関数内では、ボタンクリックの結果に応じていくつかのステートメントが実行されます。問題があるのは、関数に分岐してから、この時点に戻ることです次の関数呼び出しを実行します。これが私のコードです:

                return #This is where I want this function to terminate and then return to the function above to execute the nextFunctionCall() function.

助けていただければ幸いです、ありがとう。ここで私が抱えている問題は、各関数が 1 回実行され、最初の関数が 30 回実行されてから、elif ステートメントで変更されたステータスが発生していない限り、else 句を実行する必要があることです。

4

1 に答える 1

1

nextFunctionCall(root)を 30 回呼び出した後に実行したい場合はalarmActive、複雑にする必要はありません。から削除して、ブロックenableCodeで呼び出すだけです。else

def alarmActive(root, period=0):
    # ...
    else:
        nextFunctionCall(root)

ただし、多くの冗長コードを削減できます。たとえば、FlashTrue または False から逆に設定するだけで、値"On""Off"応じて出力する場合、これはより短く、より直接的です。

def alarmActive(root, period=0):
    global Flash
    if period <30 and AlarmStatus == "On":
        Flash = not Flash
        print("On" if Flash else "Off")
        period += 1
        print(period)
        root.after(500, lambda: alarmActive(root, period))
    else:
        if (AlarmStatus == "Off"):
            print("Alarm has been disabled before activation")
        nextFunctionCall(root)
于 2013-04-12T19:54:43.823 に答える