Skip to content

Python3 - QT_QPA_PLATFORM

Python3
  • Nach meinem Umzug auf Ubuntu 21.04 hatte ich doch mit meinem VSCodium ein kleines Problem, was aber nervte 🙂 Hier ein Bild.

    Problem.jpeg

    Links ist mein Restic UI, wenn ich es aus dem Ordner aufrufe. Rechts der Aufruf aus VSCodium heraus. Wie man sieht, passt das "Design" nicht. Ich habe jetzt bestimmt zwei Tage ziemlich viel gelesen und ausprobiert und nichts funktionierte 😞 Ja, so was kommt vor. Aber auch auf einen kleinen Hilferuf bei Twitter meldete sich leider niemand. Also musste ich das selber lösen. Also heute noch mal ran an die Sache.

    Kurze Erklärung,. Auf meinem Linux Mint Cinnamon (X-System) hatte ich keinerlei Probleme. So mit war ich mir relativ sicher, das es irgendwas mit Wayland zu tuen hatte, aber was !? Die heutige Internetrecherche brachte mich dann auf diese Seite.

    Dort stolperte ich über das hier

    $QT_QPA_PLATFORM

    This controls how Qt apps run. It can be set to xcb for X11 or wayland-egl for Wayland.

    Über dieses QT_QPA_PLATFORM war ich schon öfter gestolpert, aber das stand immer was anderes und nichts funktionierte. Hier stand mal was anderes und zwar xcb und wayland-egl.

    wayland-egl getestet mit

    export QT_QPA_PLATFORM=wayland-egl
    

    Also, in VSCodium ein Terminal aufgemacht und dort eingegeben. Danach das Programm gestartet. Nix, immer noch nackig. Also testen wir das andere.

    export QT_QPA_PLATFORM=xcb
    

    Und zack, das Fenster sieht so aus wie es auf Ubuntu 21.04 der Standard ist.

    373375aa-f1a6-4f35-91bb-b81ec1a4fa11-grafik.png

    Ok, so weit war ich erst mal zufrieden. Das ist aber nur eine temporäre Lösung, weil nach einem Neustart usw. ist das wieder weg. Aber, auch dafür gibt es eine einfache Lösung. Wir editieren unser Profil.

    frank@frank-MS-XXXX:~/Downloads$ nano ~/.profile
    

    In diese Datei fügen wir ans Ende diese Zeile hinzu.

    # This controls how Qt apps run. It can be set to xcb for X11 or wayland-egl for Wayland.
    export QT_QPA_PLATFORM=xcb
    

    Abspeichern - Fertig! Nun startet das PyQt5 Programm mit dem richtigen "Design".

    Frank wieder glücklich 🤓

  • Nachdem ich ja mittlerweile schon lange weder auf Cinnamon bin, hatte ich nach einem Update von VSCodium wieder ein anderes Design. Ok, schauen wir rein.

    (venv) frank@frank-MS-7C37:~/restic-ui-public$ env | grep "QT"
    QT_ACCESSIBILITY=1
    QT_QPA_PLATFORMTHEME=qt5ct
    

    Wenn ich das auf

    QT_QPA_PLATFORMTHEME=gnome3
    

    ändere, sieht es wie auf meinem Linux Mint Cinnamon Desktop aus.

  • Python3 - enumerate()

    Python3
    2
    0 Stimmen
    2 Beiträge
    116 Aufrufe
    FrankMF

    Ich habe noch was Code gefunden, den ich mal dringend aufräumen musste 🙂 Wenn ich mit dem Restic UI die Snapshots anzeige, dann sieht das so aus.

    reading repository password from stdin ID Time Host Tags Paths ---------------------------------------------------------------------------- 4e769748 2021-12-31 21:48:34 frank-MS-7C37 /home/frank/Bilder 34298934 2022-01-26 20:15:53 frank-MS-7C37 /home/frank/Bilder 0d5d88f2 2022-01-27 21:05:07 frank-MS-7C37 /home/frank/Bilder f0e7d5a7 2022-01-29 13:46:12 frank-MS-7C37 /home/frank/Bilder 79918d70 2022-01-29 13:52:56 frank-MS-7C37 /home/frank/Bilder d74272a3 2022-01-30 11:54:20 frank-MS-7C37 /home/frank/Bilder 11b0b5ad 2022-01-30 11:57:44 frank-MS-7C37 /home/frank/Bilder 4a7450d2 2022-02-20 09:35:56 frank-MS-7C37 /home/frank/Bilder c1a4a51d 2022-02-20 09:36:43 frank-MS-7C37 /home/frank/Bilder d178ded5 2022-02-20 09:38:53 frank-MS-7C37 /home/frank/Bilder 997e2259 2022-02-20 16:35:57 frank-MS-7C37 /home/frank/Bilder 3320ad5c 2022-02-20 16:49:19 frank-MS-7C37 /home/frank/Bilder ---------------------------------------------------------------------------- 12 snapshots

    Mich interessieren die IDs, weil ich bei der Eingabe der IDs überprüfen möchte, ob die eingegebene ID existiert. Also muss ich das irgendwie auslesen und speichern. Das habe ich bis jetzt so gemacht.

    def id_append(self, result): # We split the result into individual lines. # Result was passed. And create an list. result_list = result.split('\n') # We count the number of repositories and search for 'source'. count = result.count(backup_data[row].source) # Offset added, first interesting line is line 3! count = count + 3 # We loop through the list and output the ID's and store in snapshot_id x = 3 while x < count: a = result_list[x] y = a[0:8] snapshot_id.append(y) x = x + 1

    Das erschien mir heute, beim erneuten Betrachten, Spaghetticode zu sein. Machen wir das mal etwas ordentlicher.

    Ich nehme die Ausgabe (stdout) und erzeuge eine Liste, jede Zeile ein Element.

    result_list = result.split('\n')

    Sieht so aus

    ['reading repository password from stdin', 'ID Time Host Tags Paths', '----------------------------------------------------------------------------', '4e769748 2021-12-31 21:48:34 frank-MS-7C37 /home/frank/Bilder', '34298934 2022-01-26 20:15:53 frank-MS-7C37 /home/frank/Bilder', '0d5d88f2 2022-01-27 21:05:07 frank-MS-7C37 /home/frank/Bilder', 'f0e7d5a7 2022-01-29 13:46:12 frank-MS-7C37 /home/frank/Bilder', '79918d70 2022-01-29 13:52:56 frank-MS-7C37 /home/frank/Bilder', 'd74272a3 2022-01-30 11:54:20 frank-MS-7C37 /home/frank/Bilder', '11b0b5ad 2022-01-30 11:57:44 frank-MS-7C37 /home/frank/Bilder', '4a7450d2 2022-02-20 09:35:56 frank-MS-7C37 /home/frank/Bilder', 'c1a4a51d 2022-02-20 09:36:43 frank-MS-7C37 /home/frank/Bilder', 'd178ded5 2022-02-20 09:38:53 frank-MS-7C37 /home/frank/Bilder', '997e2259 2022-02-20 16:35:57 frank-MS-7C37 /home/frank/Bilder', '3320ad5c 2022-02-20 16:49:19 frank-MS-7C37 /home/frank/Bilder', '----------------------------------------------------------------------------', '12 snapshots', '']

    Diesmal benutzen wir die enumerate() Funktion

    for count, value in enumerate(result_list): print(count, value)

    Das was raus kommt, sieht so aus

    0 reading repository password from stdin 1 ID Time Host Tags Paths 2 ---------------------------------------------------------------------------- 3 4e769748 2021-12-31 21:48:34 frank-MS-7C37 /home/frank/Bilder 4 34298934 2022-01-26 20:15:53 frank-MS-7C37 /home/frank/Bilder 5 0d5d88f2 2022-01-27 21:05:07 frank-MS-7C37 /home/frank/Bilder 6 f0e7d5a7 2022-01-29 13:46:12 frank-MS-7C37 /home/frank/Bilder 7 79918d70 2022-01-29 13:52:56 frank-MS-7C37 /home/frank/Bilder 8 d74272a3 2022-01-30 11:54:20 frank-MS-7C37 /home/frank/Bilder 9 11b0b5ad 2022-01-30 11:57:44 frank-MS-7C37 /home/frank/Bilder 10 4a7450d2 2022-02-20 09:35:56 frank-MS-7C37 /home/frank/Bilder 11 c1a4a51d 2022-02-20 09:36:43 frank-MS-7C37 /home/frank/Bilder 12 d178ded5 2022-02-20 09:38:53 frank-MS-7C37 /home/frank/Bilder 13 997e2259 2022-02-20 16:35:57 frank-MS-7C37 /home/frank/Bilder 14 3320ad5c 2022-02-20 16:49:19 frank-MS-7C37 /home/frank/Bilder 15 ---------------------------------------------------------------------------- 16 12 snapshots 17

    Mich interessieren nur die Zeilen mit /home/frank/Bilder Das kann man so abfragen

    if backup_data[row].source in value:

    Und jetzt nur die ID entsprechend abspeichern

    snapshot_id.append(value[0:8])

    Sieht jetzt komplett so aus

    result_list = result.split('\n') for count, value in enumerate(result_list): if backup_data[row].source in value: snapshot_id.append(value[0:8]) print(count, value[0:8])

    Somit speichert er jetzt nur noch die IDs, der folgenden Ausgabe.

    3 4e769748 4 34298934 5 0d5d88f2 6 f0e7d5a7 7 79918d70 8 d74272a3 9 11b0b5ad 10 4a7450d2 11 c1a4a51d 12 d178ded5 13 997e2259 14 3320ad5c

    Diese IDs, kann ich dann weiterverarbeiten.

  • Restic UI - QtWaitingSpinner unexpected type 'float'

    Restic UI
    2
    0 Stimmen
    2 Beiträge
    240 Aufrufe
    FrankMF

    Der Autor hat meine Anpassungen um ein paar Änderungen erweitert und in sein Repo eingepflegt. Der QtWaitingSpinenr ist jetzt auch 3.10 kompatibel 🤓

    1b268980-92ca-42a4-89a0-a6e4b7ab9378-grafik.png

  • Python3 - PyQt5 QIcon

    Python3
    2
    0 Stimmen
    2 Beiträge
    122 Aufrufe
    FrankMF

    Die Suchpfade findet man hiermit

    print(QIcon.themeSearchPaths())

    Ausgabe

    ['/home/frank/.icons', '/usr/share/cinnamon/icons', '/var/lib/flatpak/exports/share/icons', '/usr/share/icons', ':/icons']
  • Python3 - QInputDialog

    Python3
    1
    0 Stimmen
    1 Beiträge
    151 Aufrufe
    Niemand hat geantwortet
  • Python3 - QSettings

    Python3
    1
    0 Stimmen
    1 Beiträge
    149 Aufrufe
    Niemand hat geantwortet
  • Restic UI - mein zweites Python3 Projekt

    Python3
    5
    0 Stimmen
    5 Beiträge
    741 Aufrufe
    FrankMF

    @berthold Hallo Berthold. Ich bin eigentlich immer noch nicht mit meinem Code zufrieden. Ist man das jemals? Da ich auch noch ein kleines Problem habe, würde ich da ungerne jemanden reinschauen lassen. Der Code ist stellenweise in deutsch kommentiert, stellenweise in englisch. Kennt man ja, man will es irgendwann mal ordentlich machen und dann kommt das nächste Problem auf einen zu.

    Hast Du Python3 Vorkenntnisse? Wenn Du "brennend" dran interessiert bist, könnte ich Dir evt. Zugang zu meinem Gitlab-Projekt geben.

    Wenn Du interessiert bist und ich dich nicht los werde :), dann schreib mir eine PN.

  • Python3 - Globale Variablen

    Python3
    1
    0 Stimmen
    1 Beiträge
    134 Aufrufe
    Niemand hat geantwortet
  • Wichtige Links

    Angeheftet Python3
    1
    0 Stimmen
    1 Beiträge
    180 Aufrufe
    Niemand hat geantwortet