【问题标题】:DietPI: _tkinter.TclError: no display name and no $DISPLAY environment variableDietPI:_tkinter.TclError:没有显示名称,也没有 $DISPLAY 环境变量
【发布时间】:2020-10-15 07:30:09
【问题描述】:

我想在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"

有什么帮助吗?

【问题讨论】:

  • 可能不支持启动GUI

标签: python raspberry-pi


【解决方案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

现在双击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 并在您准备好启动时再次启动时重新设置名称。


去喝一杯,你已经赚到了。

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

【讨论】:

    猜你喜欢
    • 2020-10-24
    • 1970-01-01
    • 2016-10-02
    • 2019-10-09
    • 2014-01-10
    • 2013-10-24
    • 1970-01-01
    • 2015-05-08
    • 2018-09-03
    相关资源
    最近更新 更多