Мне нужно включать и выключать дисплей, пока он включен, мне нужно, чтобы он отображал приветственное сообщение, созданное с помощью tkinter-python.
Сценарий, который я написал, включает и выключает дисплей, но отображает метку tkinter только после того, как я выйду из программы.
Может ли кто-нибудь объяснить мне, почему метка tkinter не отображается дважды во время компиляции эскиза?
import sys
import os
import time
from tkinter import *
import tkinter as tk
from tkinter.font import Font
import RPi.GPIO as GPIO
#pin description
sensor = 11
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(sensor,GPIO.IN)
print("Initializing PIR sensor....")
time.sleep(12)
print("PIR ready")
print("")
#initializing tkinter parameters
root = tk.Tk()
text = tk.Text(root)
font1 = Font(family = 'Helvetica', size = 30, weight = 'bold')
font2 = Font(family = 'Helvetica', size = 20, weight = 'bold')
font3 = Font(family = 'Helvetica', size = 15, weight = 'bold')
explanation = """WELCOME TO MY GUI"""
colin = tk.PhotoImage(file="background.gif")
#background=tk.Label(root,compound = tk.CENTER, text=explanation,font=font1, image=colin).pack()
def exitProgram():
print("Exit button pressed")
GPIO.cleanup()
root.quit()
exitButton =tk.Button(root, text = "Exit", font = font3, command = exitProgram, height = 1, width = 4, bd =1)
exitButton.place(x= 350, y =435)
root.attributes("-fullscreen",True)
if sys.platform.startswith('linux'):
os.system("xset dpms force off")
else:
os.system("xset dpms force on")
try:
while True:
i = GPIO.input(sensor)
if i==1:
background=tk.Label(root,compound = tk.CENTER, text=explanation,font=font1, image=colin).pack()
print("Human presence detected")
if sys.platform.startswith('linux'):
#background = tk.Label(root, compound = tk.CENTER, text=explanation, font = font1,image=colin).pack()
os.system("xset dpms force on")
time.sleep(30)
else:
print("no human around")
if sys.platform.startswith('linux'):
os.system("xset dpms force off")
time.sleep(5)
except KeyboardInterrupt:
GPIO.cleanup()
root.mainloop()
Как вы можете видеть, я использую датчик для обнаружения любых движений.если обнаружены движения, включается экран и должно отображаться приветственное сообщение.
Вы также увидите, что я прокомментировал одни и те же строки кода в разных местах эскиза, я попытался разместить метку фона в разных местах., но все же я получаю ту же проблему.Экран включается и выключается, но метка tkinter отображается только после того, как я выйду из программы.