Мне нужен скрипт python для запуска при запуске, чтобы при включении Raspberry Pi запускался скрипт. Скрипт имеет окно Tk и холст с фоновым изображением, которое заполняет дисплей 16: 9. На холсте над фоном нарисованы фигуры.
Я успешно создал эту часть проекта. Это дисплей приборной панели с мигающими стрелками, которые мигают синхронно со светодиодами, подключенными к контактам GPIO и запускаемыми кнопками. Я использую gpiozero для кнопок и светодиодов и tkinter для графики. Когда я запускаю его из IDE, все прекрасно работает.
Все изображения, формы, кнопки, светодиоды, окно, холст и функции определены правильно.
Вот функция для левого указателя поворота:
def left_blinker():
global left_arrow
if not left_LED.value:
left_LED.on()
elif left_LED.value:
left_LED.off()
if c.itemcget(left_arrow, "fill") == "black":
left_arrow = c.create_polygon(coords, bg="green")
elif c.itemcget(left_arrow, "fill") == "green":
left_arrow = c.create_polygon(coords, bg="black")
if left_button.value:
w.after(300 if left_led.value else 700, left_blinker)
Все это прекрасно работает, когда я запускаю его из IDE. Он заполняет экран центрированным фоновым изображением и полигонами (стрелками), правильно расположенными в графическом интерфейсе, и мигает синхронно, когда кнопка удерживается, и останавливается, когда кнопка отпущена. Скрипт python работает как положено.
Когда я запускаю файл из rc.local, чтобы он автоматически запускался при включении питания без окна tkinter, он работал - мигалки, светодиоды и все. Но когда я добавляю даже один
w = Tk()
он вообще не будет запускаться автоматически. Этот скрипт заканчивается на
w.mainloop()
Вот запись в rc.local:
python3 /home/pi/BMW_LR_lights &
exit 0
Даже тестовый скрипт, содержащий ТОЛЬКО окно Tjk, не будет запускаться из rc.local. Все остальное работает нормально, так как нет объектов tkinter.