从 Arduino 读取模拟值并实时显示在 Tkinter GUI 上

Read analog value from Arduino and display it on a Tkinter GUI in real time

我正在尝试创建一个 Python Tkinter GUI,用于通过串行通信在 Arduino 和 PC 之间进行简单的数据传输(我正在使用 pySerial 包)。我可以正确地将数据从 GUI 输入和发送到 Arduino。在单独的代码文件中,我也可以正确读取从 Arduino 发送的数据,但是我在将这种实时数据读取功能集成到 Tkinter GUI 程序中并在 GUI 上显示时遇到了问题。根据我的实验,要正确读取从 Arduino 发送的数据,读数需要 运行 循环。 Tkinter 也有自己的循环。因此,为了避免陷入数据读取循环,我一直在尝试使用 concurrent.futures 并行 运行 它们,但它仍然无法正常工作。请帮忙!

这是我的代码:https://drive.google.com/file/d/1xHOV-qXjg2iEA-PXa52d1_66bOpdbnzv/view?usp=sharing (请理解,我仍在学习 Python、Tkinter 和多处理。因此在约定和术语上可能存在一些错误。)

这就是 GUI 的样子: Arduino-PC Serial Communication GUI

Tkinter windows 有一个 after 方法,可用于 运行 你自己的代码作为 Tkinter 循环的一部分,例如:

from tkinter import Tk

window = Tk()

def do_something():
    print("doing something!")
    window.after(1000, do_something)  # every 1000 milliseconds

# start the do_something function immediately when the window starts
window.after(0, do_something)

window.mainloop()