Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何让脚本在包含tkinter窗口的启动时运行_Python 3.x_Tkinter_Raspberry Pi_Startupscript - Fatal编程技术网

Python 3.x 如何让脚本在包含tkinter窗口的启动时运行

Python 3.x 如何让脚本在包含tkinter窗口的启动时运行,python-3.x,tkinter,raspberry-pi,startupscript,Python 3.x,Tkinter,Raspberry Pi,Startupscript,我需要一个python脚本在启动时运行,这样当Raspberry Pi启动时,脚本就会启动。该脚本有一个Tk窗口和画布,其中有一个填充16:9显示的背景图像。在背景上的画布上画有一些形状 我已经成功地创建了项目的这一部分。它是一个带有闪烁箭头的仪表板显示屏,与连接到GPIO引脚并由按钮触发的LED同步闪烁。我用gpiozero做按钮和LED,tkinter做图形。当我从IDE运行它时,一切都很好 所有图像、形状、按钮、LED、窗口、画布和功能都已正确定义 以下是左闪烁灯的功能: def left

我需要一个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对象,所以其他一切都运行良好