使用以下行时:
self.window.after(transList[i_ref].tTimer, self.Enter)
当tTimer设置为100时,实际运行时间约为239ms
这是因为在列表类型变量中存储类值?在
班级:
^{pr2}$实例创建:
def addToList(self,event):
global transList
ref = len(transList)
t = TransMsg()
t.canID = self.IDbox.get()
t.DLC = self.DLCBox.get()
t.canType = "s"
t.msgType = "m"
t.tData0 = self.tData0Box.get()
t.tData1 = self.tData1Box.get()
t.tData2 = self.tData2Box.get()
t.tData3 = self.tData3Box.get()
t.tData4 = self.tData4Box.get()
t.tData5 = self.tData5Box.get()
t.tData6 = self.tData6Box.get()
t.tData7 = self.tData7Box.get()
t.tTimer = self.tTimerBox.get()
transList.append(t)
self.Translist.insert("end","%s %d %s %s %s %s %s %s %s %s %d" %
( transList[ref].canID,
int(transList[ref].DLC),
transList[ref].tData0,
transList[ref].tData1,
transList[ref].tData2,
transList[ref].tData3,
transList[ref].tData4,
transList[ref].tData5,
transList[ref].tData6,
transList[ref].tData7,
int(transList[ref].tTimer)))
使用字典时,似乎没有偏离设定的时间。在
函数后:
def Enter(self):
global running
items = self.Translist.curselection()
for i in items:
i_ref = int(i)
if(int(transList[i_ref].tTimer) <= 0):
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))
else:
if running == 1:
running = 0
break
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))
self.window.after(transList[i_ref].tTimer, self.Enter)
有人能解释一下是什么引起的吗?或者告诉我如何调试它?在
谢谢
after
不能保证它将等待与您指定的时间一样长的时间,因此它不适用于精确计时应用程序。从effbot documentation:虽然精确的精度是不可能的,但是如果您将
after
调用放在函数中尽可能高的位置,那么它可能会更接近您所需的时间,这样它就不会因为在它和函数开始之间发生的缓慢操作而进一步延迟。在您的例子中,尝试将它移到system
调用的正上方。在相关问题 更多 >
编程相关推荐