2012-06-29 48 views
3

我正在嘗試使用Tkinter來獲取Python GUI窗口,從作爲電壓表的Arduino Uno板上持續顯示數據流。使用我得到的代碼,窗口將顯示一個數據點,一旦窗口關閉,將打開一個新窗口,並顯示下一個可用數據點。下面是我一直使用的代碼:我使用的是MacBook Pro將Arduino連續數據流傳輸到Python

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() 

,並pySerial包我的串行通信。我如何讓窗口自行更新?

回答

2

我認爲問題在於你爲每個循環迭代創建一個新的根。試試這個代碼:

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() 

這將設置「主循環」調用「更新」功能的毫秒後,並使用變量「閱讀」,而認爲它的實際價值的參考,使它更新。

我希望這會有所幫助。

+0

它幫助了很多,謝謝。唯一需要做不同的事情是定義變量'reading',所以我在定義'update'之後做了這些,代碼完全符合我的期望。 – user1491466

相關問題