2013-04-12 1 views
-1

내 논리에 이르기까지 파이썬 코드에 문제가 있습니다. 이 함수 내에서 버튼 내에서 클릭하여 호출되는 주요 함수가 있는데이 함수 내에서 버튼 클릭 결과에 따라 달라집니다. 여러 문이 실행될 것이고, 문제는 함수로 분기 한 다음이 점으로 돌아갑니다. 다음 함수 호출을 실행하십시오. 여기 내 코드 :메인 알고리즘에서 분기하는 파이썬 논리 assays

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

감사합니다 도움, 감사합니다. 여기에있는 문제는 각 함수가 한 번 실행되고 첫 번째 함수가 30 번 실행 된 다음 elif 문에서 변경된 상태가 제공되지 않은 경우 else 절을 ​​실행해야한다는 것입니다.

+0

기간의 값은 모든 동일합니다 : 당신은 또한 참 또는 거짓 그 반대에서 Flash을 설정하고 만하려는 경우 예를 들어, "On""Off"이 값에 따라 인쇄이 더 짧고 직접적 함수를 실행할 시간. 당신의 기간 + = 1 : 문장이 쓸모 없다. – ElKamina

+1

람다 콜은 새로운 값을 통과하는 함수를 리콜한다.이 경우에는 + = 1이 작동한다 .. – user28462

+0

'global' ... 나쁜 시작으로 떨어져있다. ( – tokland

답변

1

nextFunctionCall(root)alarmActive으로 30 번 호출 한 후에 실행하려면 자신을 복잡하게 할 필요가 없습니다. 그냥 enableCode에서 제거하고 else 블록에 전화 :

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

그러나 중복 코드를 많이 줄일 수 있습니다.

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) 
+0

예 하지만 nextFunctionCall은 alarmActive 함수와 유사하며 실행 경로가 많으며 이전 함수로 돌아갑니다. – user28462

+0

'nextFunctionCall' 함수도 게시 할 수 있습니까? 'alarmActive'와 비슷한 경우, 그럼 당신은 다른 하나를 호출하는 방법에 대해 걱정하는 대신 두 가지 기능을 모두 리팩터링해야합니다. –

+0

ok 인간의 오류가 문제였습니다. 내 하위 함수, 감사합니다 첫 번째 함수를 일정을 조정했다. – user28462

관련 문제