【问题标题】:Display Sensor Reading in tkinter在 tkinter 中显示传感器读数
【发布时间】:2020-08-06 09:37:46
【问题描述】:

我已将流量传感器与树莓派接口。我希望每秒在 tkinter gui 上更新此读数。请帮助我编写代码。

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
flowin =7
GPIO.setup(7,GPIO.IN)
rate=0
seconds=0
pulse=550
time_new = 0.0
#numlist=list()

while True:
    y=2
    time_new = time.time() + 1
    rate_cnt = 0
    #y=numlist.append(x)
    while time.time() <= time_new:
        x=GPIO.input(flowin)
        if y!=x:
            if GPIO.input(flowin)!= 0:
                rate+= 1
            y=x
    seconds+=1
    litre=rate/pulse
    minutes=seconds/60
    flowrate=litre/minutes
    #print("flowrate",flowrate)

【问题讨论】:

    标签: python tkinter raspberry-pi sensors


    【解决方案1】:

    您可以使用 thread 读取传感器读数并更新与 tkinter Label 关联的 StringVar 以显示 flowrate

    以下是基于您的代码的示例:

    import RPi.GPIO as GPIO
    import tkinter as tk
    import time
    import threading
    
    def read_sensor():
        GPIO.setmode(GPIO.BOARD)
        flowin =7
        GPIO.setup(7,GPIO.IN)
        rate=0
        seconds=0
        pulse=550
        time_new = 0.0
        #numlist=list()
    
        while True:
            y=2
            time_new = time.time() + 1
            rate_cnt = 0
            #y=numlist.append(x)
            while time.time() <= time_new:
                x=GPIO.input(flowin)
                if y!=x:
                    if GPIO.input(flowin)!= 0:
                        rate+= 1
                    y=x
            seconds+=1
            litre=rate/pulse
            minutes=seconds/60
            flowrate=litre/minutes
            #print("flowrate",flowrate)
            # update the tkinter label via StringVar
            var.set(f'flowrate: {flowrate:10.2f}')
    
    # create the thread
    task = threading.Thread(target=read_sensor, daemon=True)
    
    root = tk.Tk()
    
    var = tk.StringVar()
    lbl = tk.Label(root, textvariable=var, width=40, height=5, font=('Consolas', 24, 'bold'))
    lbl.pack()
    
    task.start() # start the reading thread
    root.mainloop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 2015-10-30
      • 2022-11-28
      • 1970-01-01
      相关资源
      最近更新 更多