我正在使用 National Instruments 板进行数据采集的项目。我有用于执行任务的功能 C 代码,但想使用 Python,因此 GUI 编程不那么痛苦。在我的 C 代码中,我使用 API 调用 setTimer,它定期引发 WM_TIMER 事件。Tk 循环中是否有类似的机制?我尝试使用以下代码。
def DAQ(self):
if self.do_DAQ:
result = self.myDAQ.getData()
currTime = time.time() - self.start_time
self.time_label.config(text="{:.1f} seconds".format(currTime))
self.volt_label.config(text="{:.4f} volts".format(result))
self.time_data[self.i] = currTime
self.volt_data[self.i] = result
self.i += 1
self.after(1962, self.DAQ)
after() 中的神奇“1962”是通过反复试验确定的,以提供大约 2 秒的延迟,但时间片会根据队列中的其他内容而漂移。有没有办法让我的时间片更准确?具体来说,我可以强制 Tk 在队列中的其他事情之前执行我的 DAQ 事件吗?