如何使包含tkinter窗口的脚本在启动时运行

时间:2019-05-21 01:53:52

标签: python-3.x tkinter raspberry-pi startupscript

我需要一个Python脚本来在启动时运行,以便在Raspberry Pi通电时启动一个脚本。该脚本具有一个Tk窗口和一个画布,其背景图像填充了16:9的显示。在背景上的画布上绘制了一些形状。

我已经成功创建了项目的这一部分。它是一个仪表板显示,带有闪烁的箭头,该箭头与连接到GPIO引脚并由按钮触发的LED同步闪烁。我将gpiozero用于按钮和led,将tkinter用于图形。当我从IDE运行它时,一切都很好。

所有图像,形状,按钮,LED,窗口,画布和功能均已正确定义。

这是左转向灯的功能:

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运行它时,所有功能都可以完美运行。它以背景图像居中填充屏幕,并将多边形(箭头)正确放置在GUI上,并在按住按钮时同步闪烁,并在释放按钮时停止闪烁。 python脚本按预期工作。

当我从rc.local启动文件时,它将在开机时自动运行,而没有tkinter窗口,它可以正常工作-指示灯,LED等。但是,当我只添加一个

w = Tk()

它根本不会自动运行。该脚本以

结尾
w.mainloop()

这是rc.local中的条目:

python3 /home/pi/BMW_LR_lights &

exit 0

即使只有Tjk窗口的测试脚本也不会从rc.local运行。由于没有tkinter对象,其他所有东西都运行良好。

0 个答案:

没有答案