GUI Raspberry Pi Tutorial - Ingénieur Bald

Utilisez Qt et Python pour faire un outil facile à utiliser Pi App

par James Lewis

GUI Raspberry Pi Tutorial - Ingénieur Bald

M y favori Raspberry Pi add-on est le PiTFT de Adafruit. Avec elle, vous obtenez facilement une interface GUI Raspberry Pi et écran tactile. Le logiciel d'installation est PiTFT juste quelques petites choses et il est bon d'aller.

GUI Raspberry Pi Tutorial - Ingénieur Bald

Image de adafruit.com

Voici comment je suis arrivé QT5 pour Python et en cours d'exécution pour créer une interface graphique Raspberry Pi.

GUI Raspberry Pi Bibliothèques

Si vous commencez avec cet article sur dice.com, vous trouverez cinq boîtes à outils de python potentiels.

L'autre boîte à outils que je considérais était wxPython. Les contrôles d'interface utilisateur ont une ambiance moderne, mais ils pas tout à fait natif à la recherche. Aussi beaucoup de documentation existe. Cependant, j'ai eu quelques difficultés à obtenir courir wxGlade, qui est un éditeur graphique WYSIWYG.

Cela me conduit à Qt.

Pourquoi Qt GUI Raspberry Pi

Au collège, je Qt pour mon projet de conception principal: un bloc-notes électronique. Il était un PC avec un écran tactile 10” . Vous pouvez écrire sur lui, et il économiseriez ce que vous écrivez, une dizaine d'années avant d'Apple l'a fait.

Remarque sur les licences PyQt et Qt

PyQt est disponible sous licence GPL ou commerciale alors que Qt est disponible sous licence LGPL ou d'une licence commerciale. Je sais que même la simple mention de « commerciale » causera des gens à se détourner. Et c'est très bien. Qt est moderne, et il est gratuit (puisque je ne suis pas développer quoi que ce soit commercial.)

Si vous voulez ouvrir « pure » la source, alors vous pourriez être plus heureux avec wxPython.

Développement et production

Alors que le Raspberry Pi est un ordinateur parfaitement capable, je trouve en développement sur une 3.2” TFT un peu lourd. Donc, je voulais utiliser mon ordinateur portable « pour le développement », puis déployer le code à mon Pi lorsque vous avez terminé.

Dans mon cas, je l'ai trouvé assez facile à dupliquer l'environnement Python / Qt sur les deux.

Installation python3

Mac (aka PC) Instructions

Que vous soyez sur un Mac, Windows ou Linux, obtenir python3 et QT5 installé. Je n'ai pas grand chose à dire sur Windows ou Linux, mais sur le Mac, et installer python3 QT5 avec homebrew.

Si vous connaissez tous les répertoires, vous pouvez probablement vous en sortir sans réinstaller ces derniers. Cependant, je voudrais que le homebrew installer; ils peuvent se trouver.

Ensuite, vous devez PyQt5, qui installation varie selon le système d'exploitation.

Sur Mac, utilisez homebrew:

Sous Linux, vérifiez votre gestionnaire de paquets. La page de téléchargement PyQt5 a des binaires pour Windows.

Instructions Raspberry Pi

En supposant que vous utilisez Raspian Jessie, vous pouvez installer tous les trois avec apt-get:

Je ne suis pas expert apt-get, mais « python3-pyqt5 » pourrait être suffisant pour faire glisser le long python3.

télécharger QtCreator

Sur le PC vous envisagez de se développer à partir, télécharger et installer QtCreator. Vous pouvez télécharger ce de Qt. après avoir répondu à quelques questions sur la façon dont vous prévoyez de l'utiliser.

Croyez-le ou non, je pense que se python3, QT5 et PyQt5 installé est le plus difficile. Après cela, il est juste une question de copier / coller pour obtenir une place GUI et en cours d'exécution.

Faire une interface graphique en QtCreator

Démarrez un nouveau projet dans QtCreator et sélectionnez « Application de bureau. »

GUI Raspberry Pi Tutorial - Ingénieur Bald

Où que vous enregistrez, est à vous. (Remarque, OSX lors de la sélection d'un répertoire, la fenêtre « Nouveau projet » qui est caché. Ce qui se cache derrière la fenêtre QtCreator initiale.) Lors de la sélection du kit, je suis coller avec « bureau Qt 5.5.1 clang 64bit. » Pas besoin de sélectionner le autres. QtCreator va essayer de créer un programme C ++, mais la seule chose qui nous intéresse est le fichier MainWindow.ui. Donc, double cliquez dessus pour ouvrir l'éditeur GUI.

GUI Raspberry Pi Tutorial - Ingénieur Bald

Enfin, vous devez nommer la classe pour votre programme. Pour ce tutoriel, laissez comme « MainWindow. » De cette façon, le nom correspondra avec les trucs de Python plus tard.

GUI Raspberry Pi Tutorial - Ingénieur Bald

Enfin, sélectionnez aucun pour le contrôle de version et QtCreator va créer un cadre de C ++.

GUI Raspberry Pi Tutorial - Ingénieur Bald

La seule chose qui nous intéresse est le fichier MainWindow.ui. Donc, double cliquez dessus pour ouvrir l'éditeur GUI. À ce stade, vous allez ajouter les éléments de l'interface graphique pour créer tout ce que l'interface graphique que vous voulez. Je ne vais pas aller en profondeur sur les différents widgets ou comment ils fonctionnent. Beaucoup de meilleurs tutoriels sur ceux-ci.

GUI Raspberry Pi Tutorial - Ingénieur Bald

, Voici plutôt les choses essentielles à savoir lors de la création de votre interface graphique Raspberry Pi.

  1. Définissez la fenêtre à votre taille de l'écran
  2. Faites attention au nom un widget
  3. Définir les valeurs par défaut pour les éléments

1. Taille de la fenêtre / Taille de l'écran

Dans mon cas, je me sers du 3.5” PiTFT. En utilisant l'écran signifie que j'ai 460 par 320 pixels disponibles. Cette résolution prend en compte la barre de menu de LXDE. Donc, je me suis assuré de mettre ma fenêtre à cette taille.

2. Nom Widget

Si vous connaissez une meilleure méthode, laissez-moi savoir. J'encourage celui-ci, car il rend le code plus facile à lire plus tard.

Ne pas coller aux noms de widget par défaut QtCreator fournit.

Dans ce code, j'ai créé deux boutons « On » et « Off » nommé « btnOn » et « btnOff » respectivement.

3. Paramètres par défaut Set

Même si vous prévoyez pour votre programme / script pour remplir des valeurs dans l'interface graphique, assurez-vous de définir les valeurs par défaut appropriées. Par exemple « Pushbutton » est un texte d'étiquette pour le bouton. Vous pouvez modifier votre code, mais pourquoi pas maintenant mis en?

Créer le code GUI

Une fois que vous avez dessiné vos éléments de l'interface graphique, il est temps de générer le code Python correspondant. Maintenant, ne vous inquiétez pas si votre interface est pas « fait ». Vous pouvez répéter autant de fois les étapes suivantes que vous le souhaitez.

En QtCreator, enregistrez votre interface graphique. Il mettra à jour le fichier MainWindow.ui. Dans un terminal (ou shell de commande pour Windows), nous allons utiliser l'utilitaire pyuic5. Sur Mac et Unix, voici votre commande:

Nommez le résultat que vous voulez, je garde le nom la plupart du temps la même chose. Chaque fois que vous mettez à jour l'interface graphique à QtCreator, vous voulez exécuter pyuic5 de mettre à jour le fichier « auto.py ».

D'accord, vous demandez, nous sommes encore fait? Avons-nous une interface graphique? Oui et non. Ce code sera exécuté et créer une interface graphique, mais ce n'est pas tout à fait encore assez.

Ajouter de base du code Python

Créer un nouveau fichier Python dans le même répertoire que votre mainwindow_auto.py, avec ce code d'initialisation. Non pas que cela importe vraiment, mais je le nom de mon python principal un nom très intelligent: « main.py ». N'est-ce pas?

Avec seulement ces bits, vous pouvez lancer votre nouveau script Python et des fonctions de l'interface graphique de base. Bien sûr, les boutons et autres widgets ne sauront pas quoi faire encore, mais vous pouvez cliquer dessus.

Et voici mon GUI:

GUI Raspberry Pi Tutorial - Ingénieur Bald

Ajouter Handlers

Rappelez-vous quand je l'ai dit de faire attention aux noms des widgets que vous créez? Ce morceau de code est pourquoi. Maintenant, nous devons créer des gestionnaires dans le code Python pour chaque bouton et le widget. Dans votre fichier main.py, vous devez ajouter des fonctions à votre classe MainWindow.

Remplacer la classe MainWindow de l'exemple minimal avant avec ce code. Quand il court un message sera imprimé sur la console à chaque pression de touche.

Dans ce cas, je vais seulement donner des exemples de boutons. Avec un peu de Google-fu, vous pouvez trouver un exemple de code pour d'autres types de widget.

GUI Raspberry Pi Tutorial - Ingénieur Bald

Exécution au démarrage

Bon si vous avez déjà configuré Pi pour démarrer dans X-Windows lorsqu'il démarre, vous voudrez peut-être savoir comment faire fonctionner votre programme Python. Eh bien d'abord vous assurer que votre « main.py » et les fichiers « mainwindow_auto.py » sont dans le même répertoire. Dans mon cas, je les laisse dans mon « pi » répertoire personnel de l'utilisateur.

Et d'ajouter cette ligne:

Maintenant, publier un redémarrage sudo et il devrait charger. (Remarque, vous pouvez utiliser la commande « qui » pour vérifier l'emplacement du binaire python3.)

Télécharger Le projet entier

Si vous voulez télécharger mon code Qt et Python, voici un bouton de téléchargement.

Conclusion

Comme je l'ai dit, je pense que la chose la plus difficile dans ce tutoriel est d'obtenir tous les éléments installés en deux endroits.

Cela ne veut pas dire créer les gestionnaires appropriés pour les widgets est facile. Cependant, il y a des tonnes et des tonnes () d'aide sur la façon de construire des programmes-même Qt si le code est en C ++.

Divulgation de connexion Matériel: «liens d'affiliation » Certains des liens dans le message ci-dessus sont Cela signifie que si vous cliquez sur le lien et achetez l'article, je vais recevoir une commission d'affiliation. Peu importe, je recommande personnellement j'utilise uniquement des produits ou des services et je crois que ajoutera de la valeur à mes lecteurs. Je Révélant ceci conformément à la norme 16 CFR, partie de la Federal Trade Commission 255. « Guides concernant l'utilisation des Avenants et témoignages dans la publicité. »

post navigation

J'ai pu résoudre le problème. Je reformater la carte SD à quelques reprises, mais il avait un problème avec l'affichage pas défini.

Dans ma configuration d'origine de Adafruit il n'a jamais eu la « export DISPLAY =: 0 »
ligne dans mon profil. Quand je courais echo $ DISPLAY avec SSH il renvoie une valeur vide. Mais quand je courais echo $ DISPLAY avec VNC serré, il retournerait: 1

/.profil
- J'ai ajouté la ligne suivante à la fin: export DISPLAY =: 0
- Reboot: redémarrage sudo <—This is a must.
- Exécutez le fichier main.py

Il a travaillé par SSH - au moins pour moi.

Je reçois aussi le message d'erreur « QXcbConnection: Impossible de se connecter pour afficher » quand je l'utilise ssh. Ces deux lignes ne font aucune différence si elles sont là ou non, juste la valeur retournée de « echo $ DISPLAY » passe de la ligne vide « : 0 ». Avez-vous une idée?

Avez-vous réussi à résoudre ce problème? Obtenir la même erreur dans ma configuration avec le pi de framboise officielle écran tactile de 7 pouces.

Pas encore. J'utilise l'écran tactile de 7 pouces Raspi aussi. Mais j'ai même essayé d'utiliser un PC-Monitor normale connecté avec HDMI, le travail ne marche pas non plus ...

Quand j'ouvre startx, puis ouvrez un terminal, puis exécutez python3 mainwindow.py il fonctionne.

Est-ce la façon dont il est censé être ou devrait-il fonctionner ssh ainsi?

Je ne sais pas ce que votre mainwindow.py comprend. Si elle suit le code dans le « main.py » mon exemple, alors oui, cela devrait fonctionner.

dit Donald Porada:

Lorsque je tente de lancer « pyuic5 mainwindow.ui> mainwindow_auto.py » Je reçois l'erreur (: Aucun module nommé « PyQt5' ). Des idées?

Vous pourriez avoir installé seulement QT5 pour Python 2.7 et non Python 3. « pyuic5 » est juste un script qui appelle python

Pour éviter les problèmes, j'ai installé QT5 pour les deux versions de Python.

dit Donald Porada:

Comment puis-je configurer que Python QT5 est installé? Si je l'utilise à nouveau breuvage, il est dit que QT5 est déjà installé.

Utilisez qui pour voir si vous avez plusieurs versions de pyuic5 installé sur votre machine.

Sur ma machine, je n'ai qu'un:

Je suis assez sûr que c'est là brew installe par défaut.

Ensuite, utilisez le chat pour voir si l'un d'entre eux est d'utiliser python3:

Essayez d'appeler la commande avec python3, contenu dans le script pyuic5.

dit Donald Porada:

J'ai trouvé ce que je pense est à l'origine du problème. Malheureusement, je ne comprends pas les explications sur le web sur la façon de le corriger. Lorsque je tente de lancer configure.pi pour PyQt5 je reçois le message suivant: » Erreur: Utilisez l'argument -qmake pour spécifier explicitement un Qt travailler représentent. »

Nombre total d'abonnés

Obtenez un livre électronique gratuit

GUI Raspberry Pi Tutorial - Ingénieur Bald

Suivez James

Articles Liés