Gui with python raspberry pi

Install PyQt5 on Raspberry Pi
Install PyQt5 on Raspberry Pi Raspbian

Before you start building GUI applications with the Raspberry Pi you will need to have a working installation of PyQt5 or PyQt6 on your system. If you don’t have either set up yet, the following steps will guide you through how to do this on Windows.

Note that the following instructions are only for installation of the GPL licensed version of PyQt. If you need to use PyQt in a non-GPL project you will need to purchase an alternative license from Riverbank Computing to release your software.

Install PyQt5 on Raspberry Pi Raspbian

Installation on Raspberry Pi is very straightforward as packages for PyQt5 are available in Raspbian repositories. In Raspbian you can install either from the command line using apt . The package you are looking for is named python3-pyqt5 .

You can also install these from the command line as follows —

sudo apt install python3-pyqt5 

After install is finished, you should be able to run python (or python3 ) and import PyQt5 without errors.

Python 3.7.6 Type "help", "copyright", "credits" or "license" for more information. >>> import PyQt5 >>> 

Martin Fitzpatrick Python GUIs Coaching & Training

1:1 Python GUIs Coaching & Training

Comprehensive code reviewBugfixes & improvements • Maintainability advice and architecture improvements • Design and usability assessment • Suggestions and tips to expand your knowledgePackaging and distribution help for Windows, Mac & Linux • Find out more.

Never miss an update

Enjoyed this? Subscribe to get new updates straight in your Inbox.

Install PyQt5 on Raspberry Pi was written by Martin Fitzpatrick .

Читайте также:  Python удаление строки excel

Martin Fitzpatrick has been developing Python/Qt apps for 8 years. Building desktop applications to make data-analysis tools more user-friendly, Python was the obvious choice. Starting with Tk, later moving to wxWidgets and finally adopting PyQt.

Install PyQt5 on Raspberry Pi was published in installation on May 21, 2019 (updated March 16, 2023 )

  • Topics
  • Where do I begin?
  • Data Science
  • Packaging & Distribution
  • Databases & SQL
  • QML/QtQuick
  • Learn the fundamentals
  • Raspberry Pi
  • Games
  • Start

Follow us for new tutorials

Источник

Киоск Raspberry Pi для графического интерфейса на Kivy

Хочется поделиться опытом настройки Raspberry Pi 3B+ в качестве киоска с GUI на базе библиотеки Kivy для Python 3. Почему именно Kivy? Просто мы уже имеем продукт, разработанный на Python, нам бы хотелось добавить к нему графический интерфейс. Стоит отметить, что до Kivy мы перепробовали несколько вариантов, включая wxWidgets и даже браузер на Chromium с веб-приложением. Все эти альтернативы оказались бессильны против Kivy, лёгкой и быстрой. Очень хороший обзор этой библиотеки уже есть на Хабре.

Окружение

Мы будем использовать Raspbian Lite с Python 3.7 и системой управления процессами и сервисами Supervisor. Кстати, очень удобной является утилитка Raspberry Pi Imager, с помощью которой можно подготовить SD-карточку. После первой загрузки нашего малыша RPi логинимся с помощью стандартного логина pi и пароля raspberry. Далее выполняем:

Выбираем пятый пункт Interfacing Options, в появившемся меню нас интересует второй пункт SSH, с помощью которого мы включим удалённый доступ для удобства.
Итак, удобно откинувшись в любимом кресле, продолжим настройку RPi через любой удобный ssh-клиент.

Пользователь

Давайте создадим пользователя с удобным для нас именем, разрешим ему пользоваться sudo и перезагрузимся:

$ sudo useradd -m kivygui -s /bin/bash $ sudo passwd kivygui $ sudo usermod -a -G sudo kivygui $ sudo reboot

После перезагрузки залогинимся через ssh уже с новыми данными для kivygui и удалим стандартную учётку pi:

$ sudo userdel pi $ sudo rm -r /home/pi/ 

Не лишним будет указать, что мы пользуемся американской раскладкой клавиатуры:

$ sudo sed -i 's/XKBLAYOUT="gb"/XKBLAYOUT="us"/' /etc/default/keyboard

Тестовое приложение

Наше тестовое приложение будет находиться в отдельной папке, создадим её:

$ mkdir /home/kivygui/helloworld

Теперь давайте в текстовом редакторе nano создадим скрипт для запуска Python-приложения /home/kivygui/helloworld/run.sh со следующим содержимым:

export DISPLAY=:0.0 xset s off -dpms exec matchbox-window-manager & while true; do exec python3 start.py done

Сделаем в nano и пример простенького интерфейса в файле /home/kivygui/helloworld/start.py:

import kivy kivy.require('1.11.0') from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text='Hello, world!') if __name__ == '__main__': MyApp().run()

Графический пользовательский интерфейс

$ sudo apt-get update -y $ sudo apt-get install -y python3-pip

Также я сталкивался с тем, что при установке nodm не всегда загружались все необходимые пакеты, поэтому на всякий случай установим их заранее:

$ sudo apt-get install -y desktop-base gtk2-engines-pixbuf libxklavier16 xserver-xorg xserver-xorg-input-all xserver-xorg-input-libinput xserver-xorg-input-wacom xserver-xorg-legacy xserver-xorg-video-all xserver-xorg-video-amdgpu xserver-xorg-video-ati xserver-xorg-video-fbdev xserver-xorg-video-nouveau xserver-xorg-video-radeon xserver-xorg-video-vesa

Теперь давайте установим nodm и оконный менеджер matchbox:

$ sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get install -y x11-xserver-utils nodm matchbox-window-manager $ echo "/usr/sbin/nodm" | sudo tee /etc/X11/default-display-manager $ sudo sed -i -e "s/NODM_ENABLED=false/NODM_ENABLED=true/" -e "s/NODM_USER=root/NODM_USER=kivygui/" -e "s/NODM_X_OPTIONS='-nolisten tcp'/NODM_X_OPTIONS='-nolisten tcp -nocursor'/" /etc/default/nodm
$ sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev pkg-config libgl1-mesa-dev libgles2-mesa-dev python-setuptools libgstreamer1.0-dev git-core gstreamer1.0-plugins- gstreamer1.0- python-dev libmtdev-dev xclip xsel libjpeg-dev $ sudo python3 -m pip install --user kivy

Теперь научим нашу систему показывать нам графический интерфейс вместо консольного приглашения, скроем все диагностические сообщения и покажем графический экран загрузки системы:

$ sudo rm /etc/systemd/system/default.target $ sudo rm /etc/systemd/system/getty@tty1.service.d/autologin.conf $ sudo ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target $ sudo sed -i '$ s/$/ quiet splash consoleblank=0 loglevel=0 logo.nologo plymouth.ignore-serial-consoles/' /boot/cmdline.txt $ sudo sed -i 's/console=tty1/console=tty3/' /boot/cmdline.txt

Если есть желание, консоль tty1 вообще можно отключить:

$ sudo systemctl disable getty@tty1

Supervisord

Теперь давайте установим Supervisor:

$ sudo apt-get install -y supervisor

Теперь давайте ненадолго остановим службу Supervisor для переконфигурации:

$ sudo systemctl stop supervisor

Добавим с помощью редактора nano в кофигурационный файл /etc/supervisor/supervisord.conf следующее:

[program:rungui] command=sh run.sh directory=/home/kivygui/helloworld user=root autostart=true autorestart=true startsecs = 5 startretries=3 stderr_logfile=/home/kivygui/logs/rungui.err.log stdout_logfile=/home/kivygui/logs/rungui.out.log stderr_logfile_maxbytes=5MB stdout_logfile_maxbytes=5MB stopsignal=INT stopwaitsecs=5 

Также давайте дадим пользователям kivygui и root дополнительные возможности. Для этого воспользуемся командой:

Читайте также:  Python удаление строки excel

Приведём файл к следующему виду:

# # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL kivygui ALL=(ALL:ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d kivygui ALL = NOPASSWD: /usr/bin/supervisorctl kivygui ALL = NOPASSWD: /usr/bin/python3.7 kivygui ALL=(ALL) NOPASSWD: /bin/systemctl daemon-reload kivygui ALL=(ALL) NOPASSWD: /usr/bin/supervisord root ALL=(ALL) NOPASSWD: /bin/systemctl daemon-reload root ALL = NOPASSWD: /usr/bin/supervisorctl root ALL = NOPASSWD: /usr/bin/python3.7 root ALL=(ALL) NOPASSWD: /usr/bin/supervisord 

Теперь мы можем запускать службу:

$ sudo systemctl start supervisor

На подключенном к RPi мониторе мы увидим заветное приветствие. Осталось только перезагрузиться, чтобы проверить работу графического экрана загрузки.

P.S.

На самом деле, nodm можно заменить lightdm с автологином. Это будет абсолютно аналогичное nodm решение. Тем более, сам разработчик nodm рекомендует этот подход.

Источник

Оцените статью