使用 pyserial 和 Arduino 时遇到 TkInter 问题
Facing problems with TkInter when working with pyserial and Arduino
我是 Python 的新手,我正在使用 pyserial 从 Arduino 读取数据并使用 TkInter 创建一个 GUI,它在 GUI 的文本框中显示来自 arduino 的数据。
我正在使用这个 Python 代码:
from tkinter import *
from tkinter import ttk
import serial
import time
def disp():
ser = serial.Serial('COM1', baudrate = 9600, timeout=1)
time.sleep(1)
arduinoData = (ser.readline().strip())
a=arduinoData.decode('utf-8')
dispe.delete(0,"end")
dispe.insert(0, a)
def dis(event):
disp()
root=Tk()
button=Button(root,text="press")
button.bind("<Button-1>",dis)
button.pack(side=LEFT)
dispe=Entry(root)
dispe.pack(side=LEFT)
root.mainloop()
这段代码工作得很好。当我单击 GUI 上的按钮时,它会显示从 Arduino 接收到的值。这个程序需要用户反复点击获取值,但是我想加一个while循环,这样我就不需要再点击了continuously.The 重点是让用户只点击按钮一次。
但是当我在 time.sleep
之后插入一个 while True:
循环以不断更新从 Arduino 接收到的值时,文本框上没有显示任何内容...
这是正确的代码:-
from tkinter import *
from tkinter import ttk
import serial
import time
def disp():
ser = serial.Serial('COM1', baudrate = 9600, timeout=1)
time.sleep(1)
arduinoData = (ser.readline().strip())
a=arduinoData.decode('utf-8')
dispe.delete(0,"end")
dispe.insert(0, a)
root.after(1, disp)
def dis(event):
root.after(0, disp)
root=Tk()
L1 = Label(root, text="Press the button to get data from the arduino ")
L1.pack(side=LEFT)
button=Button(root,text="press")
button.bind("<Button-1>",dis)
button.pack(side=LEFT)
dispe=Entry(root)
dispe.pack(side=LEFT)
root.mainloop()
我是 Python 的新手,我正在使用 pyserial 从 Arduino 读取数据并使用 TkInter 创建一个 GUI,它在 GUI 的文本框中显示来自 arduino 的数据。
我正在使用这个 Python 代码:
from tkinter import *
from tkinter import ttk
import serial
import time
def disp():
ser = serial.Serial('COM1', baudrate = 9600, timeout=1)
time.sleep(1)
arduinoData = (ser.readline().strip())
a=arduinoData.decode('utf-8')
dispe.delete(0,"end")
dispe.insert(0, a)
def dis(event):
disp()
root=Tk()
button=Button(root,text="press")
button.bind("<Button-1>",dis)
button.pack(side=LEFT)
dispe=Entry(root)
dispe.pack(side=LEFT)
root.mainloop()
这段代码工作得很好。当我单击 GUI 上的按钮时,它会显示从 Arduino 接收到的值。这个程序需要用户反复点击获取值,但是我想加一个while循环,这样我就不需要再点击了continuously.The 重点是让用户只点击按钮一次。
但是当我在 time.sleep
之后插入一个 while True:
循环以不断更新从 Arduino 接收到的值时,文本框上没有显示任何内容...
这是正确的代码:-
from tkinter import *
from tkinter import ttk
import serial
import time
def disp():
ser = serial.Serial('COM1', baudrate = 9600, timeout=1)
time.sleep(1)
arduinoData = (ser.readline().strip())
a=arduinoData.decode('utf-8')
dispe.delete(0,"end")
dispe.insert(0, a)
root.after(1, disp)
def dis(event):
root.after(0, disp)
root=Tk()
L1 = Label(root, text="Press the button to get data from the arduino ")
L1.pack(side=LEFT)
button=Button(root,text="press")
button.bind("<Button-1>",dis)
button.pack(side=LEFT)
dispe=Entry(root)
dispe.pack(side=LEFT)
root.mainloop()