Raspberry Pi GUI Tutorial - Bald Ingenieur
Verwenden Sie Qt und Python zu machen eine einfache Pi App zu verwenden,
von James Lewis

M y Lieblings Raspberry Pi Add-on ist die PiTFT von Adafruit. Damit erhalten Sie ganz einfach einen Raspberry Pi GUI-Schnittstelle und Touchscreen. Die PiTFT Software installiert, ist nur ein paar Dinge, und es ist gut zu gehen.

Bild von adafruit.com
Hier ist, wie ich QT5 für Python und läuft eine Raspberry Pi GUI zu erstellen.
Raspberry Pi GUI-Bibliotheken
Wenn Sie mit diesem Artikel auf dice.com starten, werden Sie fünf mögliche Python-Toolkits finden.
Das andere Toolkit hielt ich war WxPython. Die UI-Widgets haben ein modernes Gefühl, obwohl sie nicht ganz heimisch suchen. Auch viel Dokumentation vorhanden ist. Allerdings hatte ich einige Mühe wxGlade Laufen bekommen, die ein WYSIWYG GUI-Editor ist.
Dies führt mich zu Qt.
Warum Qt für Raspberry Pi GUI
Im College habe ich Qt für meinen Senioren Design-Projekt: ein elektronisches Notizbuch. Es war ein PC mit einem 10” Touch-Screen. Sie könnten auf sie schreiben, und es würde sparen, was Sie schreiben, etwa 10 Jahre bevor Apple es tat.
Hinweis zur Lizenzierung von PyQt und Qt
PyQt ist als GPL oder kommerzielle Lizenz während Qt unter LGPL oder Gewerbelizenz ist. Ich kenne sogar die bloße Erwähnung von „commercial“ führt dazu, dass einige Leute sich abwenden. Und das ist in Ordnung. Qt ist modern, und es ist kostenlos (da ich nichts kommerzielle Entwicklung.)
Wenn Sie „reine“ Open-Source wollen, dann könnten Sie mit wxPython glücklicher sein.
Entwicklung und Produktion
Während das Raspberry Pi ein durchaus in der Lage Computer ist, fand ich auf einem 3,2” TFT Entwicklung ein wenig umständlich. Also wollte ich meinen Laptop „für die Entwicklung“ verwenden und dann den Code in meinem Pi bereitstellen, wenn Sie fertig.
In meinem Fall fand ich es ziemlich einfach, die Python / Qt-Umgebung auf beide zu duplizieren.
Installieren Python3
Mac (aka PC) Anweisungen
Egal, ob Sie auf einem Mac, Windows oder Linux sind, erhalten python3 und QT5 installiert. Ich habe nicht viel über Windows oder Linux zu sagen, aber auf dem Mac installieren python3 und QT5 mit homebrew.
Wenn Sie alle Verzeichnisse kennen, können Sie wahrscheinlich weg, ohne neu installieren diese. Allerdings Ich mag, dass mit dem Homebrew installieren; sie können sich gegenseitig finden.
Als nächstes müssen Sie PyQt5, die Installation von Betriebssystem variiert.
Auf dem Mac verwenden Homebrew:
Unter Linux, überprüfen Sie die Paket-Manager. Die PyQt5 Download-Seite hat Binärdateien für Windows.
Raspberry Pi Instructions
Angenommen, Sie Raspian Jessie laufen lassen, können Sie alle drei mit apt-get install:
Ich bin kein apt-get-Experte, aber „python3-pyqt5“ könnte ausreichen, um entlang python3 zu ziehen.
herunterladen QtCreator
Auf dem PC planen Sie zu entwickeln, herunterzuladen und zu installieren QtCreator. Sie können die von Qt herunterladen. nach ein paar Fragen zu beantworten, wie Sie planen, es zu benutzen.
Ob Sie es glauben oder nicht, ich denke immer python3, QT5 und installiert PyQt5 ist der schwierigste Teil. Danach, es ist nur eine Frage der Kopieren / Einfügen einer GUI zum Laufen zu bekommen.
Erstellen einer GUI in QtCreator
Starten Sie ein neues Projekt in QtCreator und wählen Sie „Desktop-Anwendung.“

Wo Sie es speichern, ist bis zu Ihnen. (Beachten Sie, OSX, wenn ein Verzeichnis ausgewählt hat, werden die „New Project“ Fenster versteckt. Es ist hinter den ursprünglichen QtCreator Fenstern.) Im Kit Auswahl, ich habe mit worden kleben „Desktop Qt 5.5.1 Klirren 64bit.“ Keine Notwendigkeit, die zur Auswahl Andere. QtCreator wird ein C ++ Programm, um zu versuchen und zu schaffen, aber das einzige, was uns interessiert ist die MainWindow.ui Datei. So doppelklicken Sie auf, dass die GUI-Editor zu öffnen.

Zuletzt müssen Sie die Klasse für Ihr Programm nennen. Für dieses Tutorial, lassen Sie es als „Mainwindow.“ Auf diese Weise der Name später mit der Python Sachen zusammenpassen wird.

Schließlich wählen Sie keine für die Versionskontrolle und QtCreator eine C ++ Framework erstellen gehen.

Das einzige, was wir daran interessiert sind, ist die MainWindow.ui Datei. So doppelklicken Sie auf, dass die GUI-Editor zu öffnen. An diesem Punkt, Sie gehen die GUI-Elemente hinzuzufügen, zu schaffen, was GUI Sie wollen. Ich werde gehen nicht in die Tiefe über die verschiedenen Widgets oder wie sie funktionieren. Viel bessere Tutorials auf denen.

Vielmehr sind hier die entscheidenden Dinge zu wissen, wann Ihre Raspberry Pi GUI zu erstellen.
- Stellen Sie das Fenster auf Ihre Bildschirmgröße
- Achten Sie auf den Widget-Namen
- Standardeinstellungen für Elemente
1. Fenstergröße / Bildschirmgröße
In meinem Fall bin ich mit dem 3,5” PiTFT. Mit Bildschirm bedeutet, dass ich 460 von 320 Pixel haben. Diese Auflösung wird unter Berücksichtigung LXDE der Menüleiste. Also machte ich sicher, dass mein Fenster auf diese Größe zu setzen.
2. Widget-Name
Wenn Sie eine bessere Methode kennen, lassen Sie es mich wissen. Ich ermutige dies, weil es der Code macht später leichter lesen.
Kleben Sie nicht auf die Standard Widget Namen QtCreator bietet.
In diesem Code habe ich zwei Tasten „Ein“ und „Aus“ Namen „btnOn“ und „btnOff“ bezeichnet.
3. Set Defaults
Auch wenn Sie für Ihr Programm / Skript planen, in Werte in der GUI zu füllen, stellen Sie sicher, dass Sie über die entsprechenden Standardwerte festgelegt. Zum Beispiel „Pushbutton“ ist ein Beschriftungstext für die Schaltfläche. Sie können in Ihrem Code ändern, aber warum es jetzt nicht eingestellt?
Erstellen Sie die GUI-Code
Sobald Sie Ihre GUI-Elemente gezeichnet haben, ist es Zeit, den passenden Python-Code zu generieren. Nun, keine Sorge, wenn Ihr GUI nicht „gemacht.“ Wird Sie können die folgenden Schritte so oft wiederholen, wie Sie wollen.
In QtCreator, speichern Sie Ihre GUI. Es wird die MainWindow.ui Datei aktualisieren. In einem Terminal (oder Kommando-Shell für Windows), werden wir die Verwendung des pyuic5 Nutzen machen. Unter Mac und Unix, hier ist Ihr Befehl ein:
Nennen Sie das Ergebnis, was Sie wollen, halte ich den Namen meist die gleichen. Jedes Mal, wenn Sie die GUI in QtCreator aktualisieren, werden Sie wollen pyuic5 ausführen, um die „auto.py“ Datei zu aktualisieren.
Okay, Sie fragen, wir sind noch nicht fertig? Haben wir eine GUI? Ja und nein. Dieser Code wird ausgeführt und eine grafische Benutzeroberfläche erstellen, aber das ist noch nicht ganz genug.
In Basic-Python-Code
Erstellen Sie eine neue Python-Datei im selben Verzeichnis wie die mainwindow_auto.py, mit diesem Initialisierungscode. Nicht, dass es wirklich wichtig ist, aber ich nenne meinen Haupt-Python einen sehr kluger Name: „main.py“. Ich weiß es schon gut?
Mit nur jenen Bits, können Sie Ihren neuen Python-Skript ausführen und die grundlegenden GUI-Funktionen haben. Natürlich Schaltflächen und andere Widgets werden nicht wissen, was noch zu tun ist, aber Sie können sie klicken.
Und hier ist meine GUI:

In Handlers
Denken Sie daran, wenn ich sagte achten Sie auf die Widget-Namen, die Sie erstellen? Dieses Stück Code ist der Grund. Jetzt müssen wir Handler in dem Python-Code für jede Taste und Widget erstellen. In Ihrer main.py Datei, müssen Sie einige Funktionen zu Ihrer Mainwindow-Klasse hinzuzufügen.
Ersetzen Sie die Mainwindow-Klasse aus dem minimalen Beispiel vor mit diesem Code. Wenn es läuft wird eine Meldung auf der Konsole mit jedem Tastendruck gedruckt werden.
In diesem Fall werde ich nur Schaltfläche Beispiele liefern. Mit ein wenig von Google-fu, können Sie Beispielcode für andere Widget-Typen finden.

Laufen beim Start
Okay, wenn Sie bereits das Pi konfiguriert haben in X-Windows booten, wenn er startet, mögen Sie vielleicht wissen, wie Ihr Python-Programm laufen zu lassen. Nun zunächst sicherstellen, dass Ihre „main.py“ und „mainwindow_auto.py“ Dateien im selben Verzeichnis befinden. In meinem Fall, lasse ich sie in meinem „pi“ Home-Verzeichnis des Benutzers.
Und fügen Sie diese Zeile:
Jetzt ein sudo reboot auszustellen, und auch laden. (Beachten Sie, können Sie verwenden, um den „den“ Befehl, um die Position des python3 binär zu überprüfen.)
Laden Sie das gesamte Projekt
Falls Sie meine Qt und Python-Code zum Download, hier ist eine Download-Button.
Schlussfolgerung
Wie gesagt, ich glaube, das Schwierigste, was in diesem Tutorial alle Stücke wird immer installiert-an zwei Stellen.
Das ist nicht die richtigen Handler für die Widgets sagen zu schaffen ist einfach. Allerdings gibt es Tonnen (und Tonnen) von Hilfe, wie Qt-Programme-even zu bauen, wenn es der Code in C ++.
Offenlegung von Anschluss: „Affiliate-Links“ Einige der Links in der Post oben sind Dies bedeutet, wenn Sie auf dem Link klicken und die Artikel kaufen, werde ich eine Affiliate-Provision erhalten. Egal, empfehle ich nur Produkte oder Dienstleistungen, die ich persönlich verwenden und glauben Wert meiner Leser hinzufügen. Ich bin dies mit der Federal Trade Commission 16 CFR gemäß Offenlegung, Teil 255. „Guides zur Verwendung Endorsements und Testimonials in der Werbung.“
Artikelnavigation
Ich war in der Lage, das Problem zu lösen. Ich neu formatiert die SD-Karte ein paar Mal, aber es gab ein Problem mit der Anzeige nicht definiert ist.
In meinem ursprünglichen Setup von Adafruit es hatte nie den „export DISPLAY =: 0“
Linie in meinem Profil. Wenn ich echo $ DISPLAY mit SSH lief würde es einen leeren Wert zurück. Aber wenn ich echo $ DISPLAY mit engen VNC lief, wäre es zurück: 1
/.Profil
- Ich habe die folgende Zeile am Ende: export DISPLAY =: 0
- Reboot: sudo reboot <—This is a must.
- Führen Sie die Datei main.py
Es funktionierte über SSH - zumindest für mich.
Ich habe auch die Fehlermeldung „QXcbConnection: Konnte keine Verbindung angezeigt werden“, wenn ich ssh verwenden. Diese beiden Linien machen keinen Unterschied, ob sie da sind oder nicht, nur der Rückgabewert von „echo $ DISPLAY“ wechselt von Leerzeile auf „0“. Tun Sie erhielten eine Idee?
Haben Sie es geschafft, dieses Problem zu lösen? Immer die gleichen Fehler in meinem Setup mit dem offiziellen Raspberry Pi 7-Zoll-Touchscreen.
Noch nicht. Ich benutze den Raspi 7-Zoll-Touchscreen, auch. Aber ich habe sogar versucht, einen normalen PC-Monitor kann mit HDMI, nicht funktioniert entweder verbunden zu verwenden ...
Wenn ich startx öffnen, dann öffnen Sie ein Terminal und dann python3 mainwindow.py laufen dann funktioniert es.
Ist das so, wie es sein sollte oder sollte es auch durch ssh arbeiten?
Ich weiß nicht, was Ihr mainwindow.py enthält. Wenn es den Code in meinem Beispiel der „main.py“ folgt, dann ja, sollte es funktionieren.
Donald Porada sagt:
Wenn ich versuche, „pyuic5 mainwindow.ui> mainwindow_auto.py“ Ich die Fehler zu laufen (: Kein Modul mit dem Namen ‚PyQt5' ). Irgendwelche Ideen?
Sie könnten nur installiert QT5 für Python 2.7 haben und Python nicht 3. „pyuic5“ ist nur ein Skript, das Python ruft
Um Probleme zu vermeiden, habe ich installiert QT5 für beide Versionen von Python.
Donald Porada sagt:
Wie stelle ich die Python QT5 installiert wird? Wenn ich Gebräu wieder verwenden, heißt es, dass QT5 bereits installiert ist.
Verwenden, die zu sehen, wenn Sie mehrere Versionen von pyuic5 auf Ihrem Rechner installiert haben.
Auf meinem Rechner habe ich nur eins:
Ich bin mir ziemlich sicher, das ist, wo brauen standardmäßig installiert.
Dann Katze verwenden, um festzustellen, ob einer von ihnen mit python3:
Versuchen Sie, den Befehl mit python3 Aufruf, in dem pyuic5 Skript enthalten.
Donald Porada sagt:
Ich fand, was ich denke, das Problem verursacht. Leider verstehe ich nicht die Erklärungen, die im Internet auf, wie es zu beheben. Wenn ich versuche, configure.pi für PyQt5 zu laufen bekomme ich die folgende Meldung:“Fehler: das -qmake Argument explizit angeben, eine Arbeits Qt zu machen.“
insgesamt Abonnenten
Get A Free eBook
