Forum: Mikrocontroller und Digitale Elektronik PyQt Daten Monitor/Display


von Matthias X. (aif93)


Lesenswert?

Hallo zusammen,

ich mache gerade ein Projekt und möchte jetzt eine GUI mit PyQt "bauen" 
die mir anzeigt, ob Eingangswerte vorhanden sind.

Habe mich die letzten Tag in Python und den qtDesigner eingearbeitet und 
komme jetzt aber aktuell nicht mehr weiter.

Wie schaffe ich es, dass mir meine GUI Daten anzeigt.
Also in meinem Falle habe ich einen Client der vom Server Daten empfängt 
und diese empfangen Daten würde ich mir gerne in einer GUI ausgeben 
lassen.
Also zum einen die tatsächlichen Werte und zum anderen eine Art Ampel - 
rot wenn das Signal nicht da ist und grün wenn das Signal/Wert vorhanden 
ist.

Ich hoffe, dass ich mich verständlich ausgedrückt habe.
Danke für eure Hilfe.

Viele Grüße
Matthias

von rmu (Gast)


Lesenswert?

Es ist schwierig da weiterzuhelfen. Woran krankt es denn? Am Gui, am 
Daten-Empfang, an python, oder überhaupt?

von Matthias X. (aif93)


Lesenswert?

rmu schrieb:
> Es ist schwierig da weiterzuhelfen. Woran krankt es denn? Am Gui, am
> Daten-Empfang, an python, oder überhaupt?

Ich habe jetzt mal eine GUI mit dem qtDesigner eine kleine GUI gemacht 
mit einem Pushbutton mit dem ich meinen Client "starte".
Die Daten bekomme ich auch bereits.
Diese Daten will ich eben jetzt in meiner GUI darstellen.
Also ein Beispiel wäre hier die Fahrzeuggeschwindigkeit. Die 
Geschwindigkeit kann ich mir in der Konsole bereits ausgeben lassen aber 
ich will das ganze eben jetzt in meine GUI einbauen und weiß leider 
nicht mit welchem Baustein ich mir das ganze anzeigen lassen kann.

C Programmieren ist bei mir kein Problem aber Python ist für mich eben 
noch Neuland und GUI Programmierung auch.

von rmu (Gast)


Lesenswert?

"Bausteine" gäbs da einige, von einfachen Text-Feldern über Slider, 
Drehknöpfe etc...

Für einfache Anwendungen reichts wenn man einfach beim Empfang von Daten 
ein entsprechendes Signal abfeuert, und dieses mit einem passenden Slot 
des Widgets verbindet. Aufpassen auf Nebenläufigkeit.

Bissl komplexer wirds mit z.b. matplotlib, gibt aber auch genug 
Beispiele im Netz wie man das mit PyQt 4 bzw. 5 angehen kann. Dann gäbs 
auch noch PyQtGraph und vermutlich zig andere Möglichkeiten auch noch.

von Matthias X. (aif93)


Lesenswert?

rmu schrieb:
> Für einfache Anwendungen reichts wenn man einfach beim Empfang von Daten
> ein entsprechendes Signal abfeuert, und dieses mit einem passenden Slot
> des Widgets verbindet. Aufpassen auf Nebenläufigkeit.

Ja das habe ich schon vermutet, dass es so etwas gibt.
Wie würdest du das konkret machen? Habe bis jetzt nur einfache Beispiele 
probiert also beim Klick auf den Button Farbe ändern z.B.

Danke auf jeden Fall für deine Bemühungen. Es soll ein recht einfaches 
Programm sein. mein Projekt ist soweit schon fertig und soll mit dem 
Programm nur noch etwas benutzerfreundlicher gemacht werden.

von Martin S. (strubi)


Lesenswert?

Moin,

wenn du sowieso schon einen Server hast, guck dir doch mal das 
pvbrowser-Konzept (pvbrowser.de) an. Da hast du ein Framework fürs 
Anzeigen von Daten schon fertig, und es gibt m.W. eine Python-Option. 
Nutze allerdings das Ding embedded, deshalb in C++.

von Matthias X. (aif93)


Lesenswert?

Martin S. schrieb:
> Da hast du ein Framework fürs
> Anzeigen von Daten schon fertig

Hallo Martin,

weißt du welche Widgets konkret verwendet werden?
Ich sehe zwar auf der pvbrowser Homepage eine Auflistung welche Widgets 
insgesamt verwendet werden, jedoch wäre es noch interessant zu wissen 
mit was das dann genau funktioniert.

Also kann ich zur Laufzeit mit dem QLabel dauernd Daten anzeigen lassen 
und wenn ja, muss das dann in mein Python main oder in meine Application 
Window Datei?

Vielen Dank
Matthias

von Martin S. (strubi)


Angehängte Dateien:

Lesenswert?

Guck dir doch mal die Beispiele an, da sind eine Menge Szenarien 
abgedeckt. Ich nutze da nur einen Bruchteil, siehe Attachment.
Mit dem pvdevelop-Editor ist das GUI-Erstellen ziemlich easy. Ich bin ja 
auch Fan von Python-Prototyping, aber damit geht's noch schneller. 
Deinen Code für die "Slots" kannst du im integrierten Editor direkt 
eingeben (Mit dem Qt-Slot-Konzept solltest du dich vertraut gemacht 
haben). Was du halt brauchst, ist die C++-Entwicklungsumgebung.
Gibt auch ein deutsches Manual, was das Plotten im Detail erklärt. Wenn 
du die letzten n Werte oder sowas plotten willst (wie im Bild), musst du 
im DATA-Kontext (siehe mask*slots.h) eine Plot-Buffer für deine Werte 
reservieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.