2013-08-04 1 views
0

저는 명령을 보내기 위해 직렬 포트를 사용하는 python으로 gui를 만들고 있습니다. GUI가없는 예전 스크립트에서는 write 명령 사이에 time.sleep (x)를 사용했습니다 (성공하려면 명령이 필요합니다). 이제 내가 GUI 환경을 사용할 때, 잠을 쓸 수 없어서 나중에 사용할 수 있습니다.값을 넘길 때 self.after가 대기하지 않습니다

잘 작동하지만 : 내 gui에 Tkinter를 사용하고 있습니다. 버튼 시작을 누르면 OnButtonClickSTART가 x 시간 후에 다른 함수를 시작합니다. 자아와 함께 나는 모든 프로세스 사이에서 x 초를 기다린다. 그것은 작동하지만, 함수에 값을 주면 주어진 시간을 기다리지 않습니다.

def OnButtonClickSTART(self): 
      print "START" 
      self.button1.configure(state='disabled') 
      self.after(1000, self.waitmore) 

    def waitmore(self): 
      value = 5 
      print value 
      self.after(10000,self.waitmuchmore(value)) 
    def waitmuchmore(self,value): 
      print value 
      self.after(10000,self.OnButtonClickSTOP) 
    def OnButtonClickSTOP(self): 
      print "STOP" 
      self.button1.configure(state='normal') 

그리고 여기에는 일련의 명령을 실행하는 더 좋은 방법이 있습니다. 잠과 마찬가지로 하나의 기능으로 작동하지만 GUI를 비활성화하지 않습니다. 즉시 waitmuchmore 메소드를 호출 self.waitmuchmore(value)를 사용

들으

+0

그것은 당신이 준 시간을 보인다 : 당신은 lambda expression 또는 functools.partialvalue으로 waitmuchmore를 호출하는 새로운 기능을 반환하고 대신 self.after에 그것을 전달하는 하나를 사용합니다 self.after는 상수 값을가집니다. – Reti43

답변

0

.

lambda: self.waitmuchmore(value) 

또는

import functools 
functools.partial(self.waitmuchmore, value)