首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python3.x Tkinter系列阅读

Python3.x Tkinter系列阅读
EN

Stack Overflow用户
提问于 2014-11-24 06:18:22
回答 2查看 882关注 0票数 0

我在通过串行连接读取来自arduino的串行数据时有困难。为了解决串行和gui需要同时运行的问题,我使用.after函数每100 to调用一次更新序列。但是,当我运行这段代码时,不会弹出任何窗口,并且我会收到一个错误,说明我已经超过了最大递归深度。这是我的代码:

代码语言:javascript
运行
复制
'''
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()
EN

Stack Overflow用户

回答已采纳

发布于 2014-11-24 09:17:45

您应该使用root.after(100, update)。注意在update之后缺少括号。使用括号将update的结果发送给after调用,但是要计算结果,必须运行update,其中包含对after的另一个调用,该调用需要update的结果等等。

也见this question

另外,为什么每次调用StringVar函数时都要创建一个新的update

无论如何,c = ser.readline()都会覆盖c,所以您最好还是删除这一行。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27098922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档