我在通过串行连接读取来自arduino的串行数据时遇到困难。为了解决串行问题和需要同时运行的gui的问题,我使用.after函数每100毫秒调用一次更新串行。但是,当我运行此代码时,没有弹出窗口,并且收到一条错误消息,提示我已超过最大递归深度。这是我的代码:
'''
Created on Nov 23, 2014
@author: Charlie
'''
if __name__ == '__main__':
pass
import serial
from tkinter import *
ser = serial.Serial('COM8')
ser.baudrate = 9600
def update():
c = StringVar()
c=ser.readline()
theta.set(c)
root.after(100,update())
root=Tk()
theta = StringVar()
w = Label(root, textvariable = theta)
w.pack()
root.after(100,update())
root.mainloop()
您应该使用root.after(100, update)
。请注意,之后没有括号update
。使用括号将结果发送update
给after
调用,但是要计算结果,update
必须运行该操作,其中包含另一个after
需要结果的调用update
,依此类推。
也看到这个问题。
另外,为什么StringVar
每次update
调用该函数时都要创建一个新的?仍然会
c = ser.readline()
覆盖c
,因此您也可以删除该行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句