我想更新 python gui 上的 arduino 数据,但没有发生,请有人找出问题所在

i want to update arduino data on python gui but it is not happening please some one find out the issue

我写这段代码是为了使用 dht11 温度和湿度传感器读取 arduino 数据并想在 tkinter gui 上显示数据我成功上传了数据但它没有更新我不知道为什么请一些指导我在这问题

import tkinter as tk
import serial

Serial_data = serial.Serial('COM39',9600)

data = Serial_data.read()

root = tk.Tk()
root.geometry('500x350')
label = tk.Label(root,text="hello").grid(row=0)

label1 = tk.Label(root,text=data)
label1.grid(row=1,column=1)
label1.update()
root.mainloop()

我是 python 的新人,所以请尽量简单,我将非常感激

由于您只调用了一次Serial_data.read()并且没有更新标签,因此不会更新任何内容。您应该使用 .after() 定期读取数据,如下所示(仅作为示例):

import tkinter as tk
import serial

Serial_data = serial.Serial(port='COM3', baudrate=9600, timeout=0.5) # better has timeout set, otherwise may block the program

def read_data():
    # assume the data format: humidity / temperature
    data.set(Serial_data.readline().decode('ascii').strip()) # assume data is terminated by '\n'
    print('"{}" read'.format(data.get()))
    root.after(500, read_data) # period depends on how frequent the arduino writes data to its serial port

root = tk.Tk()

data = tk.StringVar()

tk.Label(root, text='Humidity / Temperature:').grid(row=0, column=0, padx=5, pady=5)
tk.Label(root, textvariable=data, bd=2, relief='solid', width=20, fg='black', bg='white').grid(row=0, column=1, padx=5)

read_data()
root.mainloop()

并且输出:

注意我自己创建了serial模块来模拟Pythonpyserial模块,返回的数据是随机生成的所以你应该修改代码以适应你的情况。