Skip to content

PyWebIO - put_buttons

PyWebIO
  • Ich hatte mir heute Morgen beim Kaffee gedacht, es wäre doch ganz schön, wenn manch ein Button eine andere Farbe hätte. Der Plan war, den Delete Button rot zu machen.

    Das Ergebnis

    72cd20ed-900c-43c9-8031-e4d86f16bd06-grafik.png

    Meine Ausgangs Code Zeile war das hier

    put_buttons(['Edit', 'Delete'], onclick=partial(actions, count + 1)),
    

    Das macht zwei Buttons, mit der entsprechenden Auswertung. Die Dokumentation findet man hier.

    Ich habe wieder ganz schön rumprobiert, bis es geklingelt hat 🙂 So muss das aussehen, damit es schön aussieht und funktioniert.

    put_buttons([
        dict(label='Edit', value='Edit', color='primary'),
        dict(label='Delete', value='Delete', color='danger'),
                ], onclick=partial(actions, count + 1))
     ])
    

    Wenn man es mal kapiert hat, ist es eigentlich ganz einfach. Man macht jedes mal ein Dict für EINEN Button auf. Das Format ist in der Dokumentation folgendes.

    {
        "label":(str)button label,
        "value":(str)button value,
        "color":(str, optional)button color,
        "disabled":(bool, optional) whether the button is disabled
    }
    

    Damit habe ich heute Morgen beim Kaffee wieder was gelernt 🤓

  • Und noch eine kleine Übung, wie man den Buttton abhängig von einem Value enabled/disabled

    # we build header and tdata for table
    tab_mount = []
    
    for count, value in enumerate(backups):
        if count == 0:
            tab_mount.append(['No.', 'Backup name of the restic data backup', 'Actions'])
    
        if backups[value].init == "0":
            tab_mount.append([count + 1,
                             backups[count].name,
                             put_buttons([
                                 dict(label='Mount', value='Mount', color='primary', disabled=True),
                                 dict(label='UMount', value='UMount', color='primary', disabled=True),
                                 dict(label='Restore', value='Restore', color='primary', disabled=True),
                                     ] , onclick=partial(actions, count + 1))
                                     ])
        else:
            tab_mount.append([count + 1,
                             backups[count].name,
                             put_buttons([
                                 dict(label='Mount', value='Mount', color='primary'),
                                 dict(label='UMount', value='UMount', color='primary'),
                                 dict(label='Restore', value='Restore', color='primary'),
                                     ], onclick=partial(actions, count + 1))
                                     ])
    

  • Flask - Erste Schritte

    Allgemeine Diskussionen
    3
    0 Stimmen
    3 Beiträge
    209 Aufrufe
    FrankMF

    Mein vorhandenes Projekt war doch etwas größer als ich gedacht hatte. Also musste ich mehr Zeit aufwenden um es nach Flask zu transferieren. Nach einiger Zeit hatte sich eine ganz ansehnliche Zahl von Dateien angesammelt und es kam wie es kommen musste, ich wusste manchmal nicht mehr, welches File ich anfassen musste. Chaos kam auf 🙂

    So fing ich an ein wenig zu recherchieren und kam auf die Funktion Blueprint von Flask. Mich ein wenig eingelesen, ChatGPT mal eben um ein Beispiel gebeten und dann angefangen die Applikation entsprechend umzubauen.

    Auch das hat Zeit gekostet. Aber, jetzt habe ich ein aufgeräumtes Projekt, was es mir wesentlich einfacher macht, daran zu arbeiten.

    5226e90d-aa20-4b20-93af-e50f8f841880-grafik.png

    Wenn ihr also mal vorhabt, so was zu coden, halte ich es für sinnvoll das Projekt von Anfang an zu strukturieren. Und zum Schluss noch ein Screenshot zum Stand des Projektes.

    a7981ffc-0f93-41f4-93e2-c914fdba5e43-grafik.png

    Und weiter geht es, ist nämlich noch nicht fertig 😀

  • Pycharm - Umzug auf neuen Rechner

    Linux
    1
    0 Stimmen
    1 Beiträge
    78 Aufrufe
    Niemand hat geantwortet
  • Python - Formatumwandlung str -> float

    Python3
    1
    0 Stimmen
    1 Beiträge
    575 Aufrufe
    Niemand hat geantwortet
  • Vorstellung Restic UI als PyWebIO Version

    PyWebIO
    7
    0 Stimmen
    7 Beiträge
    175 Aufrufe
    FrankMF

    Link Preview Image Merge branch 'master' into 'main' (45c83cd8) · Commits · Frank / restic_ui_pywebio · GitLab

    Fix some bugs See merge request Bullet64/restic_ui_pywebio!71

    favicon

    GitLab (gitlab.com)

  • PyWebIO

    Angeheftet PyWebIO
    1
    0 Stimmen
    1 Beiträge
    191 Aufrufe
    Niemand hat geantwortet
  • Python3 - VSCodium Language Settings

    Python3
    3
    0 Stimmen
    3 Beiträge
    135 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
    109 Aufrufe
    Niemand hat geantwortet
  • PyQt6 - QSettings

    Python3
    3
    0 Stimmen
    3 Beiträge
    326 Aufrufe
    FrankMF
    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..]