【问题标题】:run tkinter gui app on startup without desktop在没有桌面的情况下在启动时运行 tkinter gui 应用程序
【发布时间】:2022-01-17 11:12:48
【问题描述】:

我一直在寻找答案,但找不到任何相关内容。

我想基于 Linux Ubuntu 构建带有触摸屏的自助点餐亭。系统应该使用单个 tkinter gui 应用程序自动启动,但我不需要任何桌面。

此外,如果应用程序因任何原因崩溃,我不希望任何人看到任何桌面 - 黑屏将是完美的。

我正在研究 openbox - 这行得通吗? 你能指导我往哪个方向看吗?

【问题讨论】:

  • 这是您要找的吗? askubuntu.com/questions/310671/… 我在 Debian 中也做过类似的事情。
  • 嗨@Meritor,你能告诉我你使用了哪种方法吗?谢谢
  • 让我将其发布为答案...太长了,无法发表评论

标签: python ubuntu tkinter


【解决方案1】:

我知道这实际上并没有回答这个问题,因为这里的操作系统风格不同。

这是在带有 LXDE 桌面的 Debian 上完成的。我为我的软件编写了一个自动安装脚本,从这里复制了一些 sn-p。

请注意确定您是否有相同的场景。

步骤 1 禁用 LXDE 桌面:

我已经从默认自动启动和用户自动启动中注释掉了 lxpanel 和 xscreensaver

  #DISABLE THE DESKTOP
  sudo sed -i 's/^@lxpanel/#@lxpanel/g' /etc/xdg/lxsession/LXDE/autostart
  sudo sed -i 's/^@xscreensaver/#@xscreensaver/g' /etc/xdg/lxsession/LXDE/autostart
  #DISABLE THE DESKTOP FOR THE USER
  sudo sed -i 's/^@lxpanel/#@lxpanel/g' /etc/xdg/lxsession/LXDE-${user_name}/autostart
  sudo sed -i 's/^@xscreensaver/#@xscreensaver/g' /etc/xdg/lxsession/LXDE-${user_name}/autostart
第 2 步设置应用程序:

注意:我使用的是python3.7

#SETUP PYTHON VENV
python3 -m venv ${application_root_dir}/venv
cd ${application_root_dir}/venv
source ${application_root_dir}/venv/bin/activate

# Install external dependencies, if any
pip3 install <dependecny_name>

# Install your software
pip3 install <software>
deactivate
步骤 3 准备 Atuostart(可选):

创建要在自动启动中执行的脚本。注意这是可选的,您可以直接在自动启动中使用您的命令(第 4 步)。

tee -a ${application_root_dir}/start_my_app.sh > /dev/null << EOT
#!/bin/bash
cd ${application_root_dir}
source venv/bin/activate
python3 -m package.MyApp
deactivate
EOT

# Set execute permissions
sudo chmod 744 ${root_dir}/start_my_app.sh
步骤 4 启动自动启动:

注意:你可以通过在[service]中设置ExecStart来执行任何命令

4.1 创建新服务
# CREATE A SERVICE FILE
sudo tee -a /etc/systemd/system/my_app.service > /dev/null << EOT
[Unit]
Description=Start MY_APPLICATION
After=default.target
Wants=default.target

[Service]
User=${user_name}
Group=$user_group
Environment=DISPLAY=:0.0
Environment=XAUTORITY=/home/${user_name}/.Xauthority
ExecStart=/bin/bash -c "${root_dir}/start_my_app.sh"

[Install]
WantedBy=default.target
EOT
4.2 注册并启用服务
sudo /usr/bin/systemctl daemon-reload
sudo /usr/bin/systemctl enable my_app.service
4.3 重启
sudo reboot

注意:启用桌面以进行故障排除(如果需要的话 - 我从来不需要,因为在我的情况下启用了 ssh,所以我使用的是终端)。取消注释 lxde desktop 的注释部分并重新启动。

【讨论】:

  • 谢谢!!!,我试试看
  • 保持发布它的进展情况..随时询问您是否被卡住
猜你喜欢
  • 2011-03-30
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 2019-11-28
  • 2013-05-11
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
相关资源
最近更新 更多