猿问

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

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

有什么帮助吗?


森栏
浏览 184回答 1
1回答

肥皂起泡泡

注意:这适用于 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 MyprojectAfter=graphical.targetWants=graphical.target[Service]User=piGroup=piExecStart=/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,当您准备好在启动时再次启动时,将名称设置回来。去喝一杯吧,你赚到了。另外,您显然可以将这些位置放置在桌面以外的位置,但请确保您始终在这些命令中使用完整路径,不要使用“~/..”快捷方式。
随时随地看视频慕课网APP

相关分类

Python
我要回答