我编写了一个消息传递程序,在测试时遇到了一个问题
如果我想以不同的时间间隔发送消息,比如说100、200和300毫秒,程序会第一次将其应用于所有消息,但是如果我在循环中包含after
,它会以3到419毫秒的不同速度发送消息
有人能告诉我如何对不同的消息应用不同的等待时间吗
global running
i_ref = 0
items = self.Translist.curselection()
for i in items:
i_ref = int(i)
if(int(transList[i_ref].tTimer) <= 0):
pass
else:
if running == 0:
self.retrans = self.window.after(transList[i_ref].tTimer, self.Enter)
self.TranButton.config(state = 'disabled')
else:
running = 0
self.window.after_cancel(self.retrans)
system('echo "%s %s 0x%s %d 0x%s 0x%s 0x%s 0x%s 0x%s 0x%s 0x%s 0x%s" >/dev/pcan33' %
(transList[i_ref].msgType,
transList[i_ref].canType,
transList[i_ref].canID,
int(transList[i_ref].DLC),
transList[i_ref].tData0,
transList[i_ref].tData1,
transList[i_ref].tData2,
transList[i_ref].tData3,
transList[i_ref].tData4,
transList[i_ref].tData5,
transList[i_ref].tData6,
transList[i_ref].tData7))
这是迄今为止的功能代码,通过按钮按下调用
after
只保证在给定时间之后的某个时间运行某个程序,而不是完全按照指定的时间间隔运行。如果指定100ms,则可以是100ms,也可以是101或200或其他任何值。它不是一个实时、高分辨率计时器。在轻负载系统中,它通常非常接近请记住,tkinter在单个线程中运行,一次只能完成一件事情。如果您在未来计划100毫秒的时间,然后开始运行需要200毫秒才能完成的代码,则计时器在该代码完成之前无法运行任何内容,因此即使您请求100毫秒,也将需要200毫秒或更长的时间,因为它必须等待其他代码完成
相关问题 更多 >
编程相关推荐