我有一个GUI (tkinter),在这里我监控来自几个传感器的数据。监控以实时图形的形式实现,每100 ms重新绘制一次。来自传感器的数据通过以太网/ip连接来获取。因此,我使用来自这个包的get_attribute_single函数(https://github.com/rossmann-engineering/eeip.py)。首先,我向我的网络通信单元(KeyenceNu-EP1)注册了一个会话。之后,我可以使用get_attribute-single从每个传感器获取单个数据。脚本如预期的那样工作完美,但是只有当我没有建立ethernet_ip连接时,GUI才是交互式的。如果我使用假值(random.randint()),GUI和绘图在交互式图形用户界面上运行得很好。如果我使用以太网/ip连接来获取和绘制真实数据,GUI变得非常缓慢。点击一个按钮后,它的颜色会发生变化。但是颜色变化是在几秒钟后进行的,所以真的很慢。有什么办法解决这个问题吗?提前谢谢。
发布于 2022-02-14 15:42:34
除非我遗漏了一些东西(我对tkinter不太熟悉),否则听起来好像你在一个线程中做所有的事情。这将创建所描述的行为,因为GUI必须等待获取数据才能更新。
要解决这类问题,您应该研究并发编程,例如concurrent.futures。
创建第二个线程,该线程获取数据并让主线程处理GUI。
https://stackoverflow.com/questions/71114363
复制相似问题