我正在尝试使用Tkinter获得一个Python GUI窗口,以连续显示从充当电压表的Arduino Uno板流出的数据流。使用我得到的代码,窗口将显示一个数据点,一旦窗口关闭,就会打开一个新窗口,其中包含下一个可用的数据点。下面是我一直使用的代码:
import serial
from Tkinter import *
ser = serial.Serial('/dev/tty.usbmodem621')
ser.baudrate = 9600
while 1 == 1:
reading = ser.readline()
root = Tk()
w = Label(root, text = reading)
w.pack()
root.mainloop()我正在使用MacBook Pro和pySerial包进行串行通信。如何让窗口自动刷新?
发布于 2012-06-30 22:06:25
我认为问题在于你在为每个循环迭代创建一个新的根。尝试以下代码:
import serial
from Tkinter import *
from time import sleep
ser = serial.Serial('/dev/tty.usbmodem621')
ser.baudrate = 9600
def update():
while 1:
reading.set(ser.readline())
root.update()
sleep(1)
root=Tk()
reading = StringVar()
w = Label(root, textvariable = reading)
w.pack()
root.after(1,update)
root.mainloop()这将"mainloop“设置为在一毫秒后调用"update”函数,并使用对变量“sets”的引用,而不是它的实际值,从而允许对其进行更新。
我希望这能帮到你。
https://stackoverflow.com/questions/11267446
复制相似问题