Я пытаюсь создать программу, которая просто читает 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()