Author Topic: Pyqt/LCD128*64/QXcbConnection Problem  (Read 608 times)

MacDuff

  • Jr. Member
  • **
  • Posts: 65
    • View Profile
Pyqt/LCD128*64/QXcbConnection Problem
« on: March 05, 2019, 11:12:31 »
Ich baue mir gerade einen kleinen Info-Screen mit dem LCD 128*64 (Air Quality, Abfahrtszeiten des Busses vor meiner Haustüre). Wegen Letzterem läuft es in einer PyQt-Schleife, damit ich den bequemen QTimer nutzen kann, sowie Pyqtsignals - und auf dem Windows-Rechner ist auch alles ok.
Sobald ich die App auf dem RED starte bricht es jedoch ab, mit der Meldung:
"QXcbConnection: Could not connect to display"
Das kleine LCD qualifiziert ja wohl nicht als GUI-Display im Sinne einer GUI-App, oder? Hab's dennoch im Environment mal als DISPLAY :0 und :1 angemeldet, ging trotzdem nicht.
Eine frühere Version meiner App (ebenfalls mit PyQt-Timer) auf dem LCD20*4 lief problemlos.
Qt bzw PyQt auf dem RED (1.13) sind auf 5.7 bzw 5.7.1 upgedatet (auf dem Win-Rechner 5.12).

Nebenbei: Ich hatte mich schon so an die f-Strings gewöhnt, die ab Python 3.6 funktionieren... Leider war ich total erfolglos, das 3.5.3 auf dem Brick auf 3.6+ zu bringen - scheint in den Debian repositories nicht zu existieren?

Hoffentlich kann jemand weiterhelfen...
macduff

photron

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 2.474
    • View Profile
Re: Pyqt/LCD128*64/QXcbConnection Problem
« Reply #1 on: March 05, 2019, 11:27:43 »
DISPLAY=:0 brauchst du nur wenn dein Programm wirklich GUI auf dem Desktop haben will.

Hast du vielleicht den Desktop auf dem Service Tab des RED Brick im Brick Viewer deaktiviert? Dann startet der X-Server nicht und dann kannst du kein GUI anzeigen.

Wenn du eigentlich keine GUI Funktionen von Qt verwendest, dann teste mal ob du nicht auch mit einer QCoreApplication statt einer QApplication auskommst.

MacDuff

  • Jr. Member
  • **
  • Posts: 65
    • View Profile
Re: Pyqt/LCD128*64/QXcbConnection Problem
« Reply #2 on: March 05, 2019, 15:59:03 »
Danke -
es funktioniert nun mit:
Desktop Einvironment aktiviert +
Code: [Select]
app = QApplication()oder
Desktop deaktiviert +
Code: [Select]
app = QCoreApplicationQApplication ist für Anwendungen mit GUI,
QCoreApplication für Konsolenanwendungen ohne GUI
Ich versteh allerdings nicht das "Desktop"-Konzept. Könnte man das evtl in der Doku präzisieren? Ist GUI == Desktop? Beim LCD128x64 ist ja auch die Rede von "GUI"...

macduff