DietPI:_tkinter.TclError:没有显示名称并且没有$ DISPLAY环境变量

时间:2020-10-15 07:30:09

标签: python raspberry-pi

我想在DietPI上运行python脚本。我选择DietPI是因为我想快速启动。

当我运行一个简单的tkinter程序时,出现错误 _tkinter.TclError: no display name and no $DISPLAY environment variable 我已经尝试过设置显示变量,例如:export DISPLAY=:0 (我也尝试过其他数字)

但是我得到_tkinter.TclError: couldn't connect to display ":0.0"

有帮助吗?

1 个答案:

答案 0 :(得分:1)

这花了我整天的时间去上班。 (我也在同一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

现在双击启动命令(并选择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 /菜单按钮,进入面板将显示您,并且可以进入附件>终端以启动新的终端窗口,然后运行以下命令:

sudo systemctl stop myproject.service

该程序将被杀死,您将回到标准桌面...

现在,要防止它在启动时再次启动,只需将您的launch.command文件重命名为DISABLED_launch.command,当您准备在启动时开始启动时,再次将名称重新设置即可。


去喝一杯,你已经赚了。

此外,您显然可以将这些位置放置在桌面以外的位置,但是请确保在所有这些命令中始终使用完整路径,而不要使用“〜/ ..”快捷方式。 < / p>