如何用python应用程序替换桌面界面

如何用python应用程序替换桌面界面,python,user-interface,raspberry-pi3,Python,User Interface,Raspberry Pi3,我正在创建一个GUI界面,该界面将使用7“用树莓皮3触摸显示屏。我希望GUI取代桌面,我不希望它显示在桌面上的窗口中。你有什么想法吗。我已经阅读了raspberry pi文档来编辑rc.local脚本,以便在登录时启动应用程序,但是我不知道如何在不创建窗口的情况下设置python GUI您的pi通过运行程序(getty)启动并显示控制台(仅显示文本)。然后运行另一个称为图形显示管理器的应用程序,该应用程序随后运行窗口管理器。在圆周率上,它通常是侏儒,但还有很多其他的,。。此窗口管理器用于显示GU

我正在创建一个GUI界面,该界面将使用7“用树莓皮3触摸显示屏。我希望GUI取代桌面,我不希望它显示在桌面上的窗口中。你有什么想法吗。我已经阅读了raspberry pi文档来编辑rc.local脚本,以便在登录时启动应用程序,但是我不知道如何在不创建窗口的情况下设置python GUI

您的pi通过运行程序(getty)启动并显示控制台(仅显示文本)。然后运行另一个称为图形显示管理器的应用程序,该应用程序随后运行窗口管理器。在圆周率上,它通常是侏儒,但还有很多其他的,。。此窗口管理器用于显示GUI窗口。你想要的很明显是可能的,只是这不是小事。您所说的是,kiosk模式应用程序仍在“桌面上”运行,但它完全遮蔽了桌面,不允许您切换或调焦,或者在没有当前窗口管理器的情况下运行更复杂的JeOS,如Kodi/XBMC裸机安装。您的python必须完成显示管理器和窗口管理器的工作,而且速度非常非常慢


使用一个非常轻的窗口管理器,进入信息亭模式。或者你可以用文字!有一些图书馆,例如网络课程,但我不确定如何使用触摸屏显示

您的pi通过运行程序(getty)启动并显示控制台(仅显示文本)。然后运行另一个称为图形显示管理器的应用程序,该应用程序随后运行窗口管理器。在圆周率上,它通常是侏儒,但还有很多其他的,。。此窗口管理器用于显示GUI窗口。你想要的很明显是可能的,只是这不是小事。您所说的是,kiosk模式应用程序仍在“桌面上”运行,但它完全遮蔽了桌面,不允许您切换或调焦,或者在没有当前窗口管理器的情况下运行更复杂的JeOS,如Kodi/XBMC裸机安装。您的python必须完成显示管理器和窗口管理器的工作,而且速度非常非常慢

使用一个非常轻的窗口管理器,进入信息亭模式。或者你可以用文字!有一些图书馆,例如网络课程,但我不确定如何使用触摸屏显示

1。 禁用图形界面,即停止桌面管理器运行。 在Raspbian上,您可以使用raspiconfig来执行此操作

二,。 将自动登录设置为bash

三,。 阻止startx自动运行桌面管理器

四,。 添加要在执行自动登录时从.bash_rc启动的应用程序

要设置autologin,请首先在/bin目录中创建名为autologin的脚本,该脚本执行以下操作:

#! /bin/bash
/bin/login -f pi
注意:pi是raspbian上的一个用户,在使用sudo时不会要求输入密码

要使用创建的脚本edit/etc/inittab:

向下滚动到指定终端的位置,并将tty1的行更改为:

1:2345:respawn:/sbin/getty -n -l /bin/autologin 38400 tty1 
注意ID是否与旧的tty1设置相匹配。 然后在用户的主目录(/home/pi)中添加(如果还没有)一个名为“.xinitrc”的文件,其中只包含:

#! /bin/bash
cat
这将阻止X服务器在启动时调用桌面管理器

现在添加/home/pi.bashrc您的应用程序或更好的脚本来运行您的应用程序(最后):

appstart是:

#! /bin/bash

# Wait a second for X server to start:
sleep 1
# Now X is running and we have to switch into video terminal using chvt (change virtual terminal) command
# Graphic terminal is on Raspbian tty7
sudo chvt 7
# Start the app:
python /home/pi/Desktop/myapp/myapp.py
所有这些设置完成后,hapen将执行以下操作:

一,。 您运行Raspberry Pi,它会自动进入用户Pi

二,。 当Bash登录时,它执行/home/pi/.bashrc

三,。 .bashrc设置$DISPLAY变量,因为还没有X显示,将启动脚本作为后台作业运行,并启动X服务器

四,。 X服务器将不会进入桌面管理器,因为/home/.xinitrc将在未进入桌面管理器之前停止它

五,。 启动脚本休眠一秒钟,以确保X正在运行并能够将图形发送到tty7,切换到tty7,以便用户不必手动执行,然后运行将显示的应用程序。 如果你的应用程序不是图形化的,你只会看到一个大问题:D

这里的问题是,你肯定应该为这些东西创建一个用户。如果您的应用程序崩溃或用户切换到tty1并在那里终止X,他/她将在bash中登录

取决于您需要的安全级别。你可以做很多事情来防止虐待。例如,使用fcntl更改tty1处于的模式,使其无法再接收按键输入。 或者使用一些其他技巧,或者稍微重新更改此过程的范围,或者确保tty1使用nohup运行作业中的所有内容,然后注销等。

1。 禁用图形界面,即停止桌面管理器运行。 在Raspbian上,您可以使用raspiconfig来执行此操作

二,。 将自动登录设置为bash

三,。 阻止startx自动运行桌面管理器

四,。 添加要在执行自动登录时从.bash_rc启动的应用程序

要设置autologin,请首先在/bin目录中创建名为autologin的脚本,该脚本执行以下操作:

#! /bin/bash
/bin/login -f pi
注意:pi是raspbian上的一个用户,在使用sudo时不会要求输入密码

要使用创建的脚本edit/etc/inittab:

向下滚动到指定终端的位置,并将tty1的行更改为:

1:2345:respawn:/sbin/getty -n -l /bin/autologin 38400 tty1 
注意ID是否与旧的tty1设置相匹配。 然后在用户的主目录(/home/pi)中添加(如果还没有)一个名为“.xinitrc”的文件,其中只包含:

#! /bin/bash
cat
这将阻止X服务器在启动时调用桌面管理器

现在添加/home/pi.bashrc您的应用程序或更好的脚本来运行您的应用程序(最后):

appstart是:

#! /bin/bash

# Wait a second for X server to start:
sleep 1
# Now X is running and we have to switch into video terminal using chvt (change virtual terminal) command
# Graphic terminal is on Raspbian tty7
sudo chvt 7
# Start the app:
python /home/pi/Desktop/myapp/myapp.py
所有这些设置完成后,hapen将执行以下操作:

一,。 您运行Raspberry Pi,它会自动进入用户Pi

二,。 当Bash登录时,它执行/home/pi/.bashrc

三,。 .bashrc设置$DISPLAY变量,因为还没有X显示,所以在后台运行启动脚本