Skip to content

PyQt6 - QSettings

Python3
  • In meinem Restic UI nutze ich PyQt6 und das wollte ich jetzt mal mit PyQt6 ausprobieren. Hatte gedacht, das wäre schnell erledigt -Nein ist es nicht 😉

    PyQt5

    # set path for user directory
    PATH = (USERHOME + '/' '.restic_ui' + '/' + FILE)
    
    settings = QSettings(PATH, QSettings.IniFormat)
    

    PyQt6

    Das wirft aber in PyQt6 nur einen Traceback

    Traceback (most recent call last):
      File "/home/frank/qsettings/test.py", line 5, in <module>
        settings = QSettings(PATH, QSettings.IniFormat)
    AttributeError: type object 'QSettings' has no attribute 'IniFormat'
    

    Jo, was machen? Viel findet man nicht im Netz, also ausprobieren.

    from PyQt6.QtCore import QSettings
    
    # Objekt erzeugen
    settings = QSettings("Frank Mankel", "Restic UI")
    
    # Pfad ausgeben
    print("Settings file located at:", settings.fileName())
    
    # Test Variablen
    name = 'TEST'
    value = 100
    
    # Zwei Testwerte setzen
    settings.setValue(name, value)
    settings.setValue("editor/wrapMargin", 68)
    
    # Zwei Testwerte ausgeben
    print(settings.value('TEST'))
    print(settings.value('editor/wrapMargin'))
    

    Ausgabe

    (qsettings-kBmIZW-V) frank@frank-MS-7C37:~/qsettings$ /home/frank/.local/share/virtualenvs/qsettings-kBmIZW-V/bin/python /home/frank/qsettings/test.py
    Settings file located at: /home/frank/.config/Frank Mankel/Restic UI.conf
    100
    68
    

    Inhalt der Datei

    [General]
    TEST=100
    
    [editor]
    wrapMargin=68
    

    Fazit

    Problem gelöst, ich weiß jetzt wie es geht und kann mich jetzt dran setzen, das in meinem PyQt6 Projekt umzubauen, wenn ich mal Lust habe.... Das wird bestimmt nicht die letzte Hürde sein...

    Quellen

  • Falls das mal jemand braucht

    settings = QSettings(QSettings.Format(0),QSettings.Scope(0),"Frank_Mankel", "Restic_UI")
    
  • Möglichkeit 1

    Das hier

    settings = QSettings("Frank_Mankel", "Restic_UI")
    

    erzeugt unter

    /home/frank/.config/Frank_Mankel/Restic_UI.conf
    

    die Konfigurationsdatei.

    Möglichkeit 2

    Das hier

    settings = QSettings("Restic_UI")
    

    erzeugt unter

    /home/frank/.config/Restic_UI.conf
    

    die Konfigurationsdatei.

    Damit habe ich die grundlegenden Dinge, hoffentlich 😉 , verstanden.

    Für den Rest mal in die Dokumentation schauen.

    Sehr hilfreich war auch mal ein Blick auf die Definition der Klasse. Rechtsklick auf QSettings und dann Go to Definition

    class QSettings(QObject):
    
        class Scope(enum.Enum):
            UserScope = ... # type: QSettings.Scope
            SystemScope = ... # type: QSettings.Scope
    
        class Format(enum.Enum):
            NativeFormat = ... # type: QSettings.Format
            IniFormat = ... # type: QSettings.Format
            InvalidFormat = ... # type: QSettings.Format
    
        class Status(enum.Enum):
            NoError = ... # type: QSettings.Status
            AccessError = ... # type: QSettings.Status
            FormatError = ... # type: QSettings.Status
    [..gekürzt..]
    
  • FrankMF FrankM hat am auf dieses Thema verwiesen

  • 0 Stimmen
    1 Beiträge
    114 Aufrufe
    Niemand hat geantwortet
  • PyWebIO vs. Flask

    Python3
    2
    0 Stimmen
    2 Beiträge
    121 Aufrufe
    FrankMF

    Mist, jetzt habe ich auch noch Streamlit gefunden. Jetzt geht mir langsam die Zeit aus...

  • NiceGUI

    Linux
    2
    0 Stimmen
    2 Beiträge
    241 Aufrufe
    FrankMF

    Ich habe mir das jetzt einige Tage gegeben und habe mich dagegen entschieden. Werde weiterhin PyWebIO benutzen. Hauptgrund ist die wesentlich bessere Dokumentation -> https://pywebio.readthedocs.io/en/latest/index.html

    Da kann ich mir auch mit meinem Python Kenntnisstand die Informationen holen, die ich brauche um es einzusetzen.

  • PyPi - Pakete ein Sicherheitsproblem?

    Python3
    1
    0 Stimmen
    1 Beiträge
    75 Aufrufe
    Niemand hat geantwortet
  • Example Class

    Angeheftet Python3
    3
    0 Stimmen
    3 Beiträge
    107 Aufrufe
    FrankMF

    In meinem PywebIO Projekt tauchte heute ein alter Bekannter auf. Wenn ich einen Eintrag (innerhalb der Liste) löschte, war das etwas durcheinander 🤔

    Ja, den Fehler kenne ich schon was länger und stolper immer mal wieder drüber. Heute z.B.

    Also mal grübeln 🤓

    Das mache ich, wenn ich einen Eintrag lösche

    case 'Yes': # delete entrie BackupList.delete((line - 1)) # save json BackupList.save_json() # Load data from filesystem BackupList.load_json() # Reload Tab Backup backup()

    Ich mache folgendes

    lösche den Eintrag speicher die Liste lade die Liste baue den Tab wieder auf

    Das führt aber dazu, das meine Liste die als Objekt im Speicher steht nicht aktuell ist. Im Gegenteil, da ist dann etwas Unordnung. Ich brauchte also die Möglichkeit mein Objekt backups irgendwie zurückzusetzen.

    Mal gegoogelt und die Dinge sind manchmal wirklich total easy 🙂

    # clear dict backups.clear()

    Das leert das Objekt und im nächsten Schritt kann ich es wieder befüllen.

    Lösung case 'Yes': # delete entrie BackupList.delete((line - 1)) # save json BackupList.save_json() # clear dict backups.clear() # Load data from filesystem BackupList.load_json() # Reload Tab Backup backup()

    Problem erledigt. Damit ich das noch finde, wenn mein Kopf das nicht mehr hergibt, notiere ich das hier.

  • Python3 - VSCodium Language Settings

    Python3
    3
    0 Stimmen
    3 Beiträge
    112 Aufrufe
    FrankMF

    Ich habe da jetzt gestern stundenlang mit rum gespielt, insbesondere Deinstallation, Neuinstallation, VSCode Installation usw. Das ging einfach nicht.

    Irgendwo meine ich dann gelesen zu haben, das VSCode auf python 3.9 festgenagelt ist und deswegen so einige Dinge nicht gehen.

    Nagelt mich darauf nicht fest, ich bin in dieser Coding Welt kein Profi.

    Dann fiel mir ein, das ich schon vor einigen Monaten mal kurz einen Blick in Pycharm geworfen hatte. Gefiel mir damals gar nicht.

    Das habe ich heute mal auf die Platte geworfen um zu schauen, ob das vernünftig mit dem o.g. Problem umgehen kann.

    6f1c3906-05a3-4126-81d4-7fdf6aa27faa-grafik.png

    Puuuh, da kann man ja noch viel mehr einstellen als bei VSCode, oder mindestens ähnlich viel. Das kann einen ganz schön überfordern. Also Stück für Stück die nächsten Tage.

    Was ist mir positiv aufgefallen?

    Wenn ich VSCodium neu installiert habe, habe ich unheimlich mit Python Versionen, pipenv usw. zu kämpfen gehabt. Bis da mein Projekt wieder lief, konnte schon mal was Zeit vergehen.

    Mit Pycharm Ordner ausgewählt, angeklickt das man dem Coder vertraut. Noch eine Python Version ausgewählt, danach fragt er das er eine pipenv Umgebung gefunden hat und diese nutzen möchte. Ja angeklickt und fertig. Keine zwei Minuten und das Projekt lief wieder 🤓

    Erster Git Commit ging auch sofort und ohne Murren.

    Schon mal ganz viele Pluspunkte gesammelt.

    Was mich aktuell beschäftigt, ist der Tab Problems, da hatte ich vorher deutlich weniger. Da muss ich mich noch was einarbeiten und schauen, wo man das alles einstellen kann.

    Ich halte euch auf dem Laufenden..

    Vielleicht fliegt ja das VSCo** Zeug runter!? Mal sehen..

  • Qt 5 Designer

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

    Python3
    1
    0 Stimmen
    1 Beiträge
    142 Aufrufe
    Niemand hat geantwortet