Я пытаюсь создать программу, которая просто считывает 2 контакта, в данном случае контакт 17 и контакт 27, используя режим установки BCM. В зависимости от значения каждого вывода (0 или 1) программа покажет на экране другое изображение.
Моя проблема в том, что при первом запуске программы изображение, которое она показывает, является правильным, но если тем временем я устанавливаю какой-либо контакт в другое состояние (ВКЛ/ВЫКЛ), программа не загружает правильное изображение на экран, показывая мне сообщение об ошибке.
Если я просто пытаюсь запустить «отпечатки», все работает нормально, но с изображениями у меня всегда такая проблема. Я никогда не пропускаю сразу после первого изображения. Застрять с исходным изображением на всю программу. Я получаю сообщение об ошибке в create_image return self._create.
РЕДАКТИРОВАТЬ: Изображение сообщения об ошибке в ссылке ниже
я получаю ошибку https://i.imgur.com/50BxkFp.png
import Tkinter as tk
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.IN)
GPIO.setup(27,GPIO.IN)
app = tk.Tk()
app.attributes("-fullscreen", True)
app.title('Presence State')
screen_width = app.winfo_screenwidth()
screen_height = app.winfo_screenheight()
emptyP = tk.PhotoImage(file = "./images/emptyPresence.jpg")
leftP = tk.PhotoImage(file = "./images/leftPresence.jpg")
rightP = tk.PhotoImage(file = "./images/rightPresence.jpg")
bothP = tk.PhotoImage(file = "./images/bothSidesPresence.jpg")
fname = tk.Canvas(app, bg = "black" , width = screen_width, height =
screen_height)
def empty():
image = fname.create_image(screen_width/2, screen_height/2, anchor =
tk.CENTER, image = emptyP)
def left():
image = fname.create_image(screen_width/2, screen_height/2, anchor =
tk.CENTER, image = leftP)
def right():
image = fname.create_image(screen_width/2, screen_height/2, anchor =
tk.CENTER, image = rightP)
def both():
image = fname.create_image(screen_width/2, screen_height/2, anchor =
tk.CENTER, image = bothP)
while(1):
if GPIO.input(17) == 0 and GPIO.input(27) == 0:
empty()
time.sleep(.5)
elif GPIO.input(17) == 1 and GPIO.input(27) == 0:
left()
time.sleep(.5)
elif GPIO.input(17) == 0 and GPIO.input(27) == 1:
right()
time.sleep(.5)
else:
both()
time.sleep(.5)
fname.pack()
app.mainloop()