为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森栏 2023-11-09 22:26:54
我想在 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 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

注意:这适用于 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 是什么,将其粘贴在您的 init 之后TK()


重新启动后,您可能会卡在应用程序中(特别是如果您全屏启动它),像 alt+f4 或 alt+f11 这样的东西不会杀死您的程序。要退出,请按键盘上的窗口/菜单按钮,访问面板将出现,您可以转到附件>终端以启动新的终端窗口,然后运行以下命令:


sudo systemctl stop myproject.service


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


现在,为了防止它在启动时再次启动,只需将launch.command文件重命名为DISABLED_launch.command,当您准备好在启动时再次启动时,将名称设置回来。


去喝一杯吧,你赚到了。


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


查看完整回答
反对 回复 2023-11-09
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信