Skip to content

Qt 5 Designer

Python3
1 1 147
  • 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

  • FreeOTP+ Datenumzug nach Bitwarden Authenticator

    Python3 ki-generiert python
    1
    0 Stimmen
    1 Beiträge
    234 Aufrufe
    Niemand hat geantwortet
  • PyWebIO vs. Flask

    Python3 pywebio flask linux python
    2
    0 Stimmen
    2 Beiträge
    272 Aufrufe
    FrankMF
    Mist, jetzt habe ich auch noch Streamlit gefunden. Jetzt geht mir langsam die Zeit aus...
  • Python & Redis-Datenbank

    Verschoben Linux python redis
    3
    0 Stimmen
    3 Beiträge
    210 Aufrufe
    FrankMF
    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann. Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}} Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar später dann die Lösung. Wie komme ich an den einzelnen Eintrag, also über den Index?? r1.json().get('stocks', 1) Gibt als Ergebnis {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50} Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen. print("TESTING", testing['stockname']) Ausgabe TESTING Henkel Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen. objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys) Ausgabe Objkeys ['0', '1'] Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.
  • Restic UI - Stand Januar 2023

    PyWebIO restic-ui pywebio python
    1
    0 Stimmen
    1 Beiträge
    162 Aufrufe
    Niemand hat geantwortet
  • List comprehensions

    Python3 python
    1
    2
    0 Stimmen
    1 Beiträge
    112 Aufrufe
    Niemand hat geantwortet
  • ResticUI with PyWebIO - Repo

    PyWebIO pywebio python restic-ui
    1
    0 Stimmen
    1 Beiträge
    129 Aufrufe
    Niemand hat geantwortet
  • PyWebIO - Footer bearbeiten

    PyWebIO pywebio python
    1
    1
    0 Stimmen
    1 Beiträge
    161 Aufrufe
    Niemand hat geantwortet
  • PyWebIO

    Angeheftet PyWebIO pywebio python
    1
    1
    0 Stimmen
    1 Beiträge
    246 Aufrufe
    Niemand hat geantwortet