我花了一整天的时间才开始工作。 (我也在另一个 SE 网站上发布了同样的答案:https://raspberrypi.stackexchange.com/a/118928/60683)
注意:这适用于 raspbian,主用户帐户使用默认用户名(“pi”)
以下是按顺序排列的步骤:
将您的python文件命名为main.py并将您的python文件拖到桌面。
接下来,新建一个纯文本文件,添加以下内容:
#!/bin/bash
python3 /home/pi/Desktop/main.py
在桌面上将此文本文件另存为launch.command。这是启动 python 文件的 shell 脚本。默认情况下它不起作用,我们必须对其进行 chmod(下一步)
运行终端并运行以下命令:
chmod u+x /home/pi/Desktop/launch.command
现在双击launch.command(并选择execute)将启动您的python文件。
此时,我们已准备好让它在启动时启动。 如果您在此之前进行过任何其他启动尝试,请撤消您所做的所有这些文件更改。
打开终端并运行以下命令:
sudo nano /etc/systemd/system/myproject.service
我们现在只是将其命名为 myproject,在你让它工作之前不要更改任何内容,然后随意尝试重命名
在弹出的窗口中,复制粘贴以下内容:
[Unit]
Description=Start Myproject
After=graphical.target
Wants=graphical.target
[Service]
User=pi
Group=pi
ExecStart=/bin/bash -c "export DISPLAY=:0; export XAUTHORITY=/home/pi/.Xauthority; /home/pi/Desktop/launch.command"
[Install]
WantedBy=graphical.target
现在按 ctrl+x 退出并保存,它会提示您保存更改,输入“y”,文件名应该已经输入为 .../myproject.service,如果是则按 enter 并它将保存并退出,如果文件名是空白的,它会搞砸(有时会发生这种情况),退出终端并再次尝试所有这些,抱歉。
现在在终端输入:
sudo systemctl daemon-reload
然后
sudo systemctl enable myproject.service
最后
sudo reboot
在启动时,在任何其他显示之前(当然是在启动初始屏幕显示之后,但在桌面显示之前)您的 GUI 现在将启动,恭喜!
我建议您全屏启动它,然后编辑您的 python 文件以使用它:
root.attributes('-fullscreen', True)
注意,'root' 可能不是你所谓的 TK() init.... 在你的代码末尾你有类似 XXXX.mainloop() 的东西,将 'root' 更改为 XXXX 是什么,坚持这是在您初始化 TK()
之后
重启后,您可能会卡在应用程序中(尤其是全屏启动时),诸如 alt+f4 或 alt+f11 之类的操作不会杀死您的程序。要退出,请按键盘上的 windows/menu 按钮,访问面板将出现,您可以转到附件>终端以启动新的终端窗口,然后运行以下命令:
sudo systemctl stop myproject.service
程序将被终止,您将返回标准桌面...
现在,为了防止它在启动时再次启动,只需将您的 launch.command 文件重命名为 DISABLED_launch.command 并在您准备好启动时再次启动时重新设置名称。
去喝一杯,你已经赚到了。
此外,您显然可以将这些位置放在桌面以外的位置,但请确保您始终在任何这些命令中使用完整路径,不要使用“~/..”快捷方式。