树莓派 tkinter GUI 7inch HDMI LCD 开机全屏自动运行

  1. 7inch HDMI LCD 设置 --> 必须设置这个,不然开机启动不了GUI
sudo nano /boot/config.txt
max_usb_current=1 
hdmi_group=2 
hdmi_mode=87 
hdmi_cvt 1024 600 60 6 0 0 0 
hdmi_drive=1

在这里插入图片描述

  1. 问题: 无法全屏显示
    在这里插入图片描述
    原因以及解决方法:注释掉上面的一行,就会全屏显示
    def run(self): 
        root = Tk()
        root.attributes('-fullscreen', True)
        # root.overrideredirect(True)  # 去除窗口边框

在这里插入图片描述

  1. 设置开机自动运行界面
    . 开机进入桌面之前 通过修改/etc/rc.local中增加运行代码去自动运行:出现问题,找答案一直无法找到, 放弃。可以以后尝试
    错误提醒:_tkinter.TclError: no display name and no $DISPLAY environment variable
    猜测: 没有进入桌面,有些库或者文件没有办法加载
  • 解决方法1: 开机进入桌面之后的自动运行,好处是:到了桌面后运行程序,可以很容易关闭程序。设置如下:
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

再末尾增加一行:

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash

增加后

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@lxterminal -e python /home/pi/Code/Project_FengHuang/FengHuang_Mountain_r41_reStructured.py

开机后,进入桌面,运行示意如下:

在这里插入图片描述

  • 解决方法2: 开机进入桌面之后的自动运行,好处是:真正的桌面,无法进行其他操作,除非Alt+F4强制关闭。设置.desktop文件:
    • 建立desktop文件, 给权限,并且修改.desktop文件如下:
touch FengHuang.desktop
chmod 755 FengHuang.desktop
[Desktop Entry]
Version=1.0.0
Name=FengHuang
Name[Sensirion]=Morgan
Exec=python /home/pi/Code/Project_FengHuang/FengHuang.py
Icon=/home/pi/Code/Project_FengHuang/sensirionlogo.png
Type=Application
  • 然后将.desktop文件转移到系统文件夹/etc/xdg/autostart/中, 然后重启
sudo cp FengHuang.desktop /etc/xdg/autostart/
sudo reboot
  • 如果要删除
sudo rm -f /etc/xdg/autostart/FengHuang.desktop
  1. 自动隐藏鼠标
  • 安装库
apt-get install unclutter
  • 打开文件
sudo nano /etc/xdg/lxsession/LXDE/autostart
  • 在末尾增加一行
@unclutter -display 0:0 -idle 5
  1. 设置时间
sudo apt-get install ntpdate 
sudo timedatectl set-ntp true

设置> asia/shangha

sudo dpkg-reconfigure tzdata 
  1. 禁止屏保
sudo nano /etc/lightdm/lightdm.conf
xserver-command=X -s 0- dpms

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要实现实时输出运行进程到Tkinter GUI,可以使用Tkinter的Text控件。下面是一个简单的示例代码: ```python import subprocess import tkinter as tk class App: def __init__(self, master): self.master = master master.title("实时输出运行进程") # 创建Text控件,用于显示运行进程的输出 self.text = tk.Text(master) self.text.pack() # 在单独的线程中运行进程,并将输出实时写入Text控件 self.process = subprocess.Popen(["ping", "www.google.com"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) self.after_id = self.master.after(100, self.poll_process) def poll_process(self): # 检查进程是否已经结束 return_code = self.process.poll() if return_code is not None: # 进程已经结束,停止更新Text控件 self.text.insert(tk.END, "\n进程已经结束,返回值为:{}".format(return_code)) return # 读取进程输出,并将其写入Text控件 output = self.process.stdout.readline().decode() if output: self.text.insert(tk.END, output) # 继续在100毫秒后更新Text控件 self.after_id = self.master.after(100, self.poll_process) def stop_process(self): # 停止进程,并停止更新Text控件 self.process.kill() self.master.after_cancel(self.after_id) root = tk.Tk() app = App(root) root.mainloop() ``` 在这个示例中,我们创建了一个名为"实时输出运行进程"的Tkinter GUI窗口,并在窗口中添加了一个Text控件,用于显示运行进程的输出。然后,我们在单独的线程中运行了一个ping命令,并将其输出实时写入Text控件。我们使用after()方法来每100毫秒更新Text控件,直到进程结束为止。当我们想要停止进程时,只需要调用stop_process()方法即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值