Как бы я постоянно обновлял переменную в скрипте / программе? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь сделать своего рода термостат.Для этого я использую Pi3 с датчиком температуры DHT22 и Python3.

Мне нужно, чтобы температура опрашивалась и соответствующая переменная обновлялась самостоятельно.

Попытка сделать это с любым видом While True: операторы приводят к тому, что я тестирую графический интерфейс, а не открываю.

Я потерян (И да, этот код взломан вместе с другими. LOL)

#! python3
import time
import RPi.GPIO as GPIO
import string
import tkinter
import tkinter.ttk
import Adafruit_DHT
from tkinter import messagebox
from tkinter import *

root = Tk()
root.title('PiTEST')
root.configure(background='black')

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

sensor = Adafruit_DHT.DHT22
pin = 4

def PRINTTEST():
    print(temperature, humidity)

TESTTEXT = Label(root,text="TESTING",fg="white",bg="black",font='Consolas 20 bold')
TESTTEXT.grid(row=1,column=1,sticky="W,S,E")

B1 = tkinter.Button(root,bd=5,text="TEST",bg="gray",fg="white",command=PRINTTEST,height=4,width=20)
B1.grid(row=2,column=1,sticky="N,S,E,W",padx=8,pady=8)

while True:
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
    temperature = temperature * 9/5.0 + 32

root.mainloop()

GPIO.cleanup()

1 Ответ

0 голосов
/ 01 февраля 2019

Вот пример кода без вещей GPIO:

#! python3
import time
import string
import tkinter
import random
from tkinter import messagebox
from tkinter import *

root = Tk()
root.title('PiTEST')
root.configure(background='black')

def PRINTTEST():
    temperature = random.randint(0,100)
    humidity = random.randint(0,100)
    print(temperature, humidity)
    root.after(1000, PRINTTEST)

TESTTEXT = Label(root,text="TESTING",fg="white",bg="black",font='Consolas 20 bold')
TESTTEXT.grid(row=1,column=1,sticky="W,S,E")

B1 = tkinter.Button(root,bd=5,text="TEST",bg="gray",fg="white",command=PRINTTEST,height=4,width=20)
B1.grid(row=2,column=1,sticky="N,S,E,W",padx=8,pady=8)


root.mainloop()

Это выведет 2 случайных целых числа каждую секунду в вашем терминале.

...