Skip to content

Python3

Ihr sprecht Python? 😉 Ich übe noch..

75 Themen 138 Beiträge

Unterkategorien


  • Und wieder eine Version, diesmal mit einer MongoDB als DB

    1 2
    1 Themen
    2 Beiträge
    FrankMF
    Ich habe den Sonntag mal genutzt um ein wenig was einzubauen. Einmal habe ich mit datatables.net die Tabelle etwas funktionaler gestaltet. [image: 1736705735786-00a95363-1f41-4bbf-884a-34f21aea81e4-grafik.png] Man kann nun suchen, sortieren und wenn man mehr als 10 Datenpunkte hat, hat die Tabelle auch Pagination. Ein nettes Projekt, macht einiges einfacher Das nächste, ich hatte es im Video ja kurz erwähnt, mir fehlte ja noch die Restore Funktion von Restic. Ok, ist jetzt auch drin. Da die Benutzerverwaltung mittlerweile komplett eingebaut ist, werde ich demnächst meine Test Datenbanken und alles was damit zu tuen hat, aus dem Code entfernen. Brauch ich jetzt nicht mehr. Habe jetzt zwei Benutzer, einen Produktiven und einen zum Testen. Langfristig steht auch noch eine zweite Sprache auf dem Zettel. Aber, dafür muss ich Lust haben, das Thema juckt nicht so richtig
  • Low code Python web framework

    7 18
    7 Themen
    18 Beiträge
    FrankMF
    Und solltest Du was finden, was kaputt ist, ich freue mich immer über Feedback
  • Mein zweites Python & PyQT5 Projekt

    13 27
    13 Themen
    27 Beiträge
    FrankMF
    Mit der Einführung der Kompression in Restic v0.14.0 ist das Verlangen groß auch zu sehen, welche Version das Repo hat. E gibt die alte Version v1 und die neue mit Kompression v2. Das hat mich natürlich auch interessiert und es gibt da auch keine direkte Anzeigemöglichkeit für. Im Forum wurde mir dann geraten, das mit restic cat config zu machen. Das habe ich nun so eingebaut, das in der Übersicht die Version angezeigt wird. Da das je nach Ort des Repos ein wenig dauern kann, habe ich die Funktion als QThread integriert mit dem bekannten Spinner. [image: 1662280710564-b3f1ed1a-b943-4d90-9f8b-70aba9a9eed6-grafik.png]
  • Mein Restic Webinterface, gebaut mit Python & Flask

    1 1
    1 Themen
    1 Beiträge
    FrankMF
    Ich habe ja damals mit PyWebIO ein Restic UI gebaut. Das gibt es auch auf gitlab.com Dieses PyWebIO ist schon ein tolles Tool, weil man den Python Code nicht verlässt. Aber, es hat zu viele Einschränkungen, die man dann nicht, oder nur sehr mühsam umgehen kann. Also war ich auf der Suche nach neuen Herausforderungen Zwei Frameworks die ich kannte, waren Django und Flask. Meine Wahl fiel auf Flask. Und nun fand ich mich wieder in Dingen, die ich vor langer Zeit zuletzt benutzt hatte. HTML, CSS und Javascript. Ich musste mich also wieder durch viele Themengebiete wühlen. Dank der Hilfe von ChatGPT, der mir einiges wieder erklären musste, habe ich dann aber mein Tool wieder so hinbekommen, wie ich es gerne haben wollte. Ich wollte es heute mal anhand einiger Screenshots vorstellen. Die Funktionalität ist wie beim alten Tool. Habe es aber ein wenig angepasst und viel mehr Funktionen ins Dashboard gepackt. Somit ist von dort aus, fast alles zu erreichen. Dashboard [image: 1709459983696-dashboard.png] Dashboard mit Hamburger Menü [image: 1709460022585-hamburger_menue.png] Add Backup [image: 1709460381552-add_backup.png] Add Backup with REST [image: 1709460406992-add_backup_with_rest.png] Edit Backup [image: 1709460414447-edit_backup.png] About [image: 1709460431520-about.png] Allgemeines Das Tool ist unter https://127.0.0.1:5050/dashboard mit selbstsignierten Zertifikaten erreichbar. Restic UI Flask nutzt als Backend zur Datenspeicherung eine Redis Datenbank. Ja, ist etwas auf mich zugeschnitten, ich habe hier immer eine Redis DB laufen, noch für andere Sachen. ToDo Den Code sauber machen, da liegt noch zu viel Müll rum. Danch werde ich den, wenn ich alles nochmal auf Fehler geprüft habe, auf Gitlab veröffentlichen. Vielleicht hilft es dem ein oder anderen Ich mach mal mit OBS ein Video davon.
  • Python3 - class BackupList

    python3
    2
    0 Stimmen
    2 Beiträge
    259 Aufrufe
    FrankMF
    Mir hat heute jemand auf Twitter zu meinem Problem geantwortet. https://twitter.com/OliverTheUnique/status/1381888728080211968 Das habe ich natürlich direkt, bei einer Tasse Kaffee, ausprobiert. Geht einwandfrei und ein Problem ist damit Vergangenheit. Bei meiner Konstruktion musste ich immer eine Länge für die Liste p vorgeben. p = list(range(10)) Das wird jetzt nicht mehr benötigt. Schön Jetzt muss ich mir das noch in Ruhe anschauen, nachlesen und verstehen. Danke für den netten Hinweis!
  • Python3 - PyQt5 Layout

    pyqt5 python3
    1
    2
    0 Stimmen
    1 Beiträge
    188 Aufrufe
    Niemand hat geantwortet
  • Python3 - QSettings

    python3
    1
    0 Stimmen
    1 Beiträge
    170 Aufrufe
    Niemand hat geantwortet
  • Python3 - String-Operatoren

    python3
    1
    0 Stimmen
    1 Beiträge
    157 Aufrufe
    Niemand hat geantwortet
  • Python3 - subprocess.Popen

    restic python3
    1
    0 Stimmen
    1 Beiträge
    326 Aufrufe
    Niemand hat geantwortet
  • Python3 - Eingabeformular

    python3
    3
    1
    0 Stimmen
    3 Beiträge
    237 Aufrufe
    FrankMF
    Meine endgültige Lösung, zu mindestens im Moment , ist ein zweites Window. Das gefällt mir am Besten, komme ich zu mindestens im Moment einfach besser mit klar. Aber, eines der größten Probleme war für mich, wie aktualisiere ich die Liste im Hauptfenster!? Da habe ich doch etliche Stunden dran rum gefummelt.... Hier nur mal das Layout ##################### # Layout ##################### self.formGroupBox = QGroupBox("Form layout") layout = QFormLayout() layout.addRow(self.label_1) layout.addRow(QLabel("Backup Name:"), self.input1) layout.addRow(QLabel("Repository:"), self.button3) layout.addRow(QLabel("Source:"), self.button4) layout.addRow(QLabel("Password:"), self.input4) layout.addRow(self.label_6) layout.addRow(self.button2) self.formGroupBox.setLayout(layout) self.setLayout(layout) Das mit dem SecondWindow ist aber was aufwändiger. Da mach ich dann mal einen eigenen Beitrag zu. Aktuell sieht das so aus. [image: 1604819923887-6c68c956-9127-438f-bc54-4dcef8e18f00-image.png]
  • Python3 - JSON

    python3
    3
    1
    0 Stimmen
    3 Beiträge
    230 Aufrufe
    FrankMF
    [image: 1603645936018-ede1a88a-5183-4f85-a602-27650362d532-grafik.png] Die Backups sollen Namen haben, also habe ich das erweitert. Jetzt sollen diese als Liste rechts angezeigt werden. Das mache ich wie folgt. for key in backups: print(backups[key]['name'], key) liste = backups[key]['name'] + " ID: " + key self.listWidget.addItem(liste) Mittels des Keys kann ich auf den Namen zugreifen und die Liste damit füllen. Aktuell habe ich noch den Key hinten angefügt, weil ich noch keine Idee habe, wie ich die Backups anders verarbeiten soll. Aber, Stück für Stück. Der Backup-Name wird nach Auswahl in der Statusbar angezeigt. So weit klappt das so wie ich mir das vorstelle. Für heute ist Feierabend
  • Python3 - Globale Variablen

    python3
    1
    0 Stimmen
    1 Beiträge
    150 Aufrufe
    Niemand hat geantwortet
  • Python3 - RegEx für ein LineEdit

    pyqt5 python3
    2
    1
    0 Stimmen
    2 Beiträge
    203 Aufrufe
    FrankMF
    Gut, Menschen die mich kennen, wissen das IPv6 nicht so mein Spezialgebiet ist. Es hilft aber nichts, auch damit muss man sich beschäftigen Es war etwas schwierig was Passendes zu finden, aber ich denke das hier ist ganz gut. Ob es alle Möglichkeiten bei IPv6 beinhaltet, weiß ich nicht zu 100%. Hier eine Seite, wo ich was Passendes gefunden habe. https://ihateregex.io/expr/ipv6/ Code # regex für IPv6 reg_ex = QRegExp('^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$') input_validator = QRegExpValidator(reg_ex, self.lineedit2_ipv6) self.lineedit2_ipv6.setValidator(input_validator) Ein paar Test von mir ergaben, das es so aussieht als wenn es funktioniert
  • Python3 - zwei Webseiten als Empfehlung

    pyqt5 python3
    1
    0 Stimmen
    1 Beiträge
    188 Aufrufe
    Niemand hat geantwortet
  • Wireguard UI - mein erstes Python3 Projekt

    pyqt5 python3
    2
    3
    0 Stimmen
    2 Beiträge
    266 Aufrufe
    FrankMF
    Dinge entwickeln sich. Es sieht alles schon wieder was anders aus Hauptfenster [image: 1600889374694-270b5c68-3d64-44ca-9a01-e3f24ba4a26c-grafik.png] Setup Fenster zum Erstellen der wg0.conf [image: 1600889412743-27c3cb28-50f5-4e00-b03d-de47c07372a0-grafik.png] Und alles funktioniert so weit
  • PyQt5

    pyqt5
    1
    0 Stimmen
    1 Beiträge
    171 Aufrufe
    Niemand hat geantwortet
  • Python und GUI

    Verschoben python3
    1
    1
    0 Stimmen
    1 Beiträge
    176 Aufrufe
    Niemand hat geantwortet