【问题标题】:Update Tkinter Label from function从函数更新 Tkinter 标签
【发布时间】:2016-03-29 16:09:58
【问题描述】:

我创建了一个连接到超声波传感器的 Arduino nano 和一个 Raspberry Pi 2 Model 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 时如何更新标签?

谢谢你帮助我, 最好的祝福 阿明

【问题讨论】:

  • 抱歉,亲爱的先生,但您确实意识到,对于我们中的许多人来说,“Der Abstand zum...”这句话毫无意义。毕竟不是每个人都是德国人。我建议您尽可能翻译这些错误。

标签: python tkinter arduino usb


【解决方案1】:

不要重新定义labeldat,(顺便说一下,你没有实际上这样做,因为你没有声明你指的是全局变量),只需使用@987654322 @:

def getdata() :
    labeldat.set(0)
    while labeldat.get() == 0 :
        labeldat.set(ser.readline())
    root.update_idletasks()

【讨论】:

    猜你喜欢
    • 2016-08-11
    • 2011-02-05
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2017-11-18
    相关资源
    最近更新 更多