2016-03-29 6 views
0

Я создал установку Arduino nano, которая подключена к ультразвуковому датчику, и модель малины Pi 2 B. Arduino запускает и считывает ультразвуковой датчик и отправляет данные каждые 0, 1 секунду через USB. Все в порядке с соединением, и я получаю результаты, когда я разговариваю с Arduino над Python Shell. Теперь я хотел бы создать хороший Python GUI, читать расстояние, вот код:Обновить метку Tkinter от функции

from Tkinter import * 
import time 
import serial 

DEVICE = '/dev/ttyUSB0' 
BAUD = 9600 
ser = serial.Serial(DEVICE, BAUD) 
root = Tk() 
labeldat = IntVar(value=1) 
def getdata() : 
    labeldat = 0 
    while labeldat == 0 : 
     labeldat = ser.readline() 
    root.update_idletasks() 

root.title("Abstandsmessung mit Ultraschall") 
Label(text="Der Abstand zum naechsten Objekt betraegt:", fg="#0A116B").pack() 
Label(root, textvariable=labeldat, fg="#0A116B").pack() 
Button(text='Hole Abstand!', command=getdata, background="#33D63B", fg="#FFFFFF").pack() 

root.mainloop() 

Теперь я получаю первую этикетку с «Der Abstand Цум naechsten Objekt betraegt:» и вторая этикетка с текстом: "1". Конечно, я также получаю кнопку, обозначенную «Hole Abstand!». Проблема в том, что при нажатии кнопки ничего не происходит. Как я могу обновить Label каждый раз при изменении labeldat?

Спасибо за помощь мне, С наилучшими пожеланиями Armin

+1

Извинения дорогой сэр, но вы понимаете, что для многих из нас слова «Der Abstand Цум ...» ничего не значит. Не все, конечно, немец. Я предлагаю вам перевести эти ошибки, если это возможно. –

ответ

0

Вместо повторного определения labeldat, (который, кстати, вы не на самом деле делать, потому что вы не заявляете, что вы имеете в виду глобальная переменная), просто используйте Tkinter.IntVar.set():

def getdata() : 
    labeldat.set(0) 
    while labeldat.get() == 0 : 
     labeldat.set(ser.readline()) 
    root.update_idletasks() 
Смежные вопросы