我已经创建了一个Arduino nano的设置,它连接到超声波传感器和Raspberry Pi 2模型B.Arduino触发并读取超声波传感器,并通过USB每0.1秒发送一次数据。连接时一切正常,当我通过Python Shell与Arduino交谈时,我得到了结果。现在我想创建一个漂亮的Python GUI,读取距离,这里是代码:
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 zum naechsten Objekt betraegt:”的标签和带有文字的第二个标签:“1”。当然我也得到了一个标有“Hole Abstand!”的按钮。
问题是,当我点击按钮时没有任何反应。每次更改labeldat
时,如何更新标签?
谢谢你的帮助, 最好的祝福 阿明
答案 0 :(得分:0)
而不是重新定义labeldat
,(顺便说一句,你不是实际做的,因为你没有声明你指的是全局变量),只需使用Tkinter.IntVar.set()
:
def getdata() :
labeldat.set(0)
while labeldat.get() == 0 :
labeldat.set(ser.readline())
root.update_idletasks()