Skip to content

Qt 5 Designer

Python3
  • ich habe die Tage mal den Qt 5 Designer ausprobiert.

    3d38ec8c-d60c-41a9-a290-a1edc561f037-grafik.png

    Installation

    apt://qttools5-dev-tools
    

    Und da ich hier das erste Mal auf apt:// gestoßen bin, habe ich mal nachgesehen, was das ist.

    apturl ist eine kleine Ergänzung für Firefox, Epiphany und apt-get, das die Installation von Paketen über die Adresszeile des Browsers bzw. durch einen simplen Linksklick linke Maustaste erlaubt. Mit einem kleinen manuellen Eingriff kann man apturl auch mit anderen Browsern nutzen.

    Wenn man auf so einen Link klickt, kommt folgendes Fenster im FF

    87d39baf-88ee-415c-97ca-c1b5f62c117e-image.png

    Damit kann man dann den Designer installieren.

    Test Programm

    Mein kleines Testprogramm, was nichts anderes macht, als das UI zu laden und anzuzeigen.

    from PyQt6 import QtWidgets, uic
    import sys
    
    class Ui(QtWidgets.QMainWindow):
        def __init__(self):
            super(Ui, self).__init__() # Call the inherited classes __init__ method
            uic.loadUi('test.ui', self) # Load the .ui file
            self.show() # Show the GUI
    
    app = QtWidgets.QApplication(sys.argv) # Create an instance of QtWidgets.QApplication
    window = Ui() # Create an instance of our class
    app.exec() # Start the application
    

    Das UI sieht so aus test.ui

      GNU nano 4.8                                                                                                                                               test.ui                                                                                                                                                          
       <string>Restic UI</string>
      </property>
      <widget class="QWidget" name="centralwidget">
       <widget class="QListView" name="listView">
        <property name="geometry">
         <rect>
          <x>0</x>
          <y>0</y>
          <width>1131</width>
          <height>551</height>
         </rect>
        </property>
       </widget>
       <widget class="QWidget" name="horizontalLayoutWidget">
        <property name="geometry">
         <rect>
          <x>0</x>
          <y>0</y>
          <width>1131</width>
          <height>541</height>
         </rect>
        </property>
        <layout class="QHBoxLayout" name="horizontalLayout">
         <property name="sizeConstraint">
          <enum>QLayout::SetDefaultConstraint</enum>
         </property>
        </layout>
       </widget>
       <zorder>horizontalLayoutWidget</zorder>
       <zorder>listView</zorder>
      </widget>
      <widget class="QMenuBar" name="menubar">
       <property name="geometry">
        <rect>
         <x>0</x>
         <y>0</y>
         <width>1125</width>
         <height>21</height>
        </rect>
       </property>
       <widget class="QMenu" name="menuTest">
        <property name="title">
         <string>File</string>
        </property>
        <addaction name="actionLoad_File"/>
        <addaction name="actionAdd_Backup"/>
        <addaction name="actionEdit_Backup"/>
        <addaction name="actionDelete_Backup"/>
       </widget>
       <addaction name="menuTest"/>
      </widget>
      <widget class="QStatusBar" name="statusbar"/>
      <action name="actionLoad_File">
       <property name="text">
        <string>Load File</string>
       </property>
      </action>
      <action name="actionAdd_Backup">
       <property name="text">
        <string>Add Backup</string>
       </property>
      </action>
      <action name="actionEdit_Backup">
       <property name="text">
        <string>Edit Backup</string>
       </property>
      </action>
      <action name="actionDelete_Backup">
       <property name="text">
        <string>Delete Backup</string>
       </property>
      </action>
     </widget>
     <resources/>
     <connections/>
    </ui>
    

    Das gestartete Programm sieht so aus

    e7603057-14e9-4c06-b383-748768119084-grafik.png

    Was mich bei einem kurzen Test etwas verwirrt hat ist, das UI ist nicht responsiv. In dem Beispiel ist ein List View. Wenn ich das Fenster größer ziehe, bleibt die Größe des List View fix. In meinem Restic UI, erstellt mit PyQt6, ändert sich das so wie man es erwartet. Ich habe vermutlich nicht das Konzept dahinter verstanden, kommt aber noch - hoffe ich.

    eaf34d13-5298-4fd5-9370-d3bf11dd8a02-grafik.png

  • 0 Stimmen
    2 Beiträge
    427 Aufrufe
    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
  • Pycharm - Interpreter Settings

    Python3 python pycharm
    1
    2
    0 Stimmen
    1 Beiträge
    161 Aufrufe
    Niemand hat geantwortet
  • Flask - Erste Schritte

    Allgemeine Diskussionen flask python ki-generiert
    3
    1
    0 Stimmen
    3 Beiträge
    273 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. [image: 1697954135081-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. [image: 1697954267467-a7981ffc-0f93-41f4-93e2-c914fdba5e43-grafik.png] Und weiter geht es, ist nämlich noch nicht fertig
  • Python - Frameworks

    Python3 python pywebio flet
    2
    0 Stimmen
    2 Beiträge
    169 Aufrufe
    FrankMF
    Und mal hier parken https://www.youtube.com/watch?v=Tucr8Ta-kq4&t=1911s
  • Vorstellung Restic UI als PyWebIO Version

    PyWebIO restic-ui pywebio python
    7
    0 Stimmen
    7 Beiträge
    270 Aufrufe
    FrankMF
    https://gitlab.com/Bullet64/restic_ui_pywebio/-/commit/45c83cd8c38f466e427046b0f123c23def1bd7ca
  • ResticUI with PyWebIO - Repo

    PyWebIO pywebio python restic-ui
    1
    0 Stimmen
    1 Beiträge
    117 Aufrufe
    Niemand hat geantwortet
  • PyQt6 - QSettings

    Python3 python
    3
    0 Stimmen
    3 Beiträge
    437 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..]
  • Restic UI - REST Server Unterstützung

    Restic UI restic-ui restic rest-server python
    2
    0 Stimmen
    2 Beiträge
    284 Aufrufe
    FrankMF
    Die REST Unterstützung ist komplett https://gitlab.com/Bullet64/restic-ui-public/-/releases/1.1.0 Ich denke, ein wenig Dokumentation wäre noch gut