我在python中使用串口发送命令。在我的旧脚本中,没有gui,我在write命令之间使用了time.sleep(x)(命令成功是必要的)。现在,当我使用gui envrimont时,我无法使用睡眠,因此我会使用它。
效果很好,但是: 我正在使用Tkinter作为我的gui。当我按下按钮开始时,OnButtonClickSTART在x时间后启动另一个功能。随着self.after我等待每个进程之间的x secondes。它可以工作,但是当我给这个函数赋值时,它不会等到给定的时间。
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')
并不是这里执行一系列命令的更好方法,它们之间有一定的时间。像睡眠,但使用1功能,并不会禁用gui。
THX
答案 0 :(得分:0)
使用self.waitmuchmore(value)
会立即调用waitmuchmore
方法。您需要使用lambda
expression或functools.partial
来返回将waitmuchmore
调用value
的新功能,并将其传递给self.after
:
lambda: self.waitmuchmore(value)
或
import functools
functools.partial(self.waitmuchmore, value)