Inhaltsverzeichnis
Es gibt andere APIs, um in der Lage zu sein GUI-Anwendungen in Python erstellen zum Beispiel QT-Designer was es Ihnen ermöglicht, schön aussehende visuelle Schnittstellen zu erstellen und dann durch die PyQt-Bibliotheken automatisch den erforderlichen Code der Schnittstellen in Python mit dem Befehl zu generieren pyuic, was ist ein UI-Compiler für QT was kommt dazu PyQt-Paket.Das Tutorial Plattformübergreifende Anwendungen mit Python, PyQT und QT Desginer 5, wir hatten angefangen, Python, pyqt und qt zu installieren und zu konfigurieren In diesem Tutorial werden wir PyQT 4 aus Stabilitätsgründen verwenden, es kann auch mit PyQt 5-Bibliotheken verwendet werden .
In diesem Tutorial erstellen wir eine visuelle Anwendung zum Verbinden einer Sqlite 3-Datenbank und definieren die Funktionen zum Speichern und Anzeigen von Daten.
Wir beginnen mit der Erstellung der Datenbank in Sqlite dafür können wir die Sqliteman-Software verwenden, die in jedem Betriebssystem verwendet werden kann. Wir können es herunterladen und installieren, um Sqlite Version 3-Datenbanken verwalten zu können.
Von der offiziellen Website können wir die Version für das Betriebssystem herunterladen, das für unsere Entwicklung zu uns passt.
Als nächstes starten wir Sqliteman und gehen ins Menü Datei> Neue Datei und wir erstellen unsere Datenbank dbproducts.db.
Dann gehen wir ins Menü Kontext> Tabelle erstellen und wir erstellen die Produkttabelle.
Der SQL-Code kann von derselben Software abgerufen werden, indem Sie mit der rechten Maustaste auf den Tabellennamen klicken und die Option Tabelle beschreiben verwenden. Der resultierende Code ist der folgende:
CREATE TABLE Produkte (TEXT NOT NULL Code, TEXT NOT NULL Produkt, TEXT NOT NULL Menge, TEXT NOT NULL Preis)Um in Python zu programmieren, verwenden wir in diesem Tutorial NetBeans. Wir benötigen ein Plugin, das wir von der Netbeans Plugins-Website herunterladen können.
Wir laden die Datei herunter, entpacken sie und in dem Ordner haben wir alle Dateien und Abhängigkeiten, die wir zu NetBeans hinzufügen können.
Dann öffnen wir das Netbeans-Programm, wir benötigen die Version 8.0.2 und gehen zum Menü Werkzeuge> Plugin, Dann gehen wir zur Registerkarte Heruntergeladen und ein Dialogfeld wird geöffnet, in dem wir alle Plugins auswählen, die wir mit dem Schlüssel herunterladen:
Umschalt + ↓
Dann klicken wir auf die Schaltfläche Installieren, um das Plugin zu aktivieren, und starten dann NetBeans neu.Als nächstes öffnen wir NetBeans und gehen ins Menü Datei> Neues Projekt und Wir wählen die Python-Option und dann Python-Projekt.
Dann weisen wir unserem Projekt einen Namen und die Python-Version zu, die den Code ausführt, in diesem Fall Version 2.7.6.
Nachdem wir das Projekt erstellt haben, erstellen wir die Schnittstelle dafür, gehen zum Qt-Designer und erstellen den folgenden Bildschirm
Wir erstellen zuerst das Qt Designer-Projekt, gehen zum Menü Datei> Neues Projekt und wählen den Bildschirmtyp aus, den wir verwenden werden, es wird Hauptfenster sein.
Dann werden wir 4 Widget-Label setzen, wenn wir es in der Widget-Box auf der linken Seite nicht finden können, müssen wir danach suchen.
In der Eigenschaftsbox rechts müssen wir jedem seinen jeweiligen Namen zuweisen und ihn dann identifizieren, mit den Codekonventionen hätten wir die folgenden Namen lblCode, lblProdukt, lbl Menge Ja lblPreis.
Wir haben viele Eigenschaften, um jedes Element zu konfigurieren, aber in diesem Tutorial werden wir die einfachsten verwenden. Wir nehmen also jedes Etikett und ziehen es auf den Bildschirm, um es an der gewünschten Position zu belassen.
Als nächstes werden wir die Textfelder oder LineEdit platzieren, denen wir einen Namen zuweisen txtCode, txtProdukt, txt Menge, txtPreis. Dies sind die Felder der Datenbank mit diesen Textfeldern geben wir Daten ein, die wir dann speichern.
Als nächstes setzen wir 2 Druckknopf oder Knöpfe wird man sein btSpeichern zum Einfügen von Daten in die Datenbank und andere btUpdate um eine Datenliste zu aktualisieren.
Dann fügen wir a . hinzu tableWidget die wir auch in der linken Spalte suchen müssen, ziehen wir sie auf den Bildschirm und benennen sie tbl-Produktliste.
Dann speichern wir die Datei als productlist.ui. in dem Ordner, wo ist das Projekt, mit dem wir erstellt haben Netzbohnen.
Wir öffnen ein Terminalfenster, um die Datei von . zu konvertieren QT productlist.ui zu Python mit dem folgenden Befehl:
puic4 produktliste.ui> produktliste.pyDer Python-Code des Designs sieht wie folgt aus
# - * - Codierung: utf-8 - * - # Formularimplementierung generiert aus dem Lesen der UI-Datei 'productlist.ui' # # Erstellt: So. Nov. 1 18:03:40 2015 # von: PyQt4 UI-Codegenerator 4.10.4 # # WARNUNG! Alle in dieser Datei vorgenommenen Änderungen gehen verloren! from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 außer AttributeError: def _fromUtf8 (s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambigui, return,GuiGui translate (context, text, disambig, _encoding) außer AttributeError: def _translate (context, text, disambig): return QtGui.QApplication.translate (context, text, disambig) class Ui_UIProducts (object): def setupUi (self, UIProducts): UIProducts.setObjectName (_fromUtf8 ("UIProductos")) UIProductos.resize (497, 374) self.centralwidget = QtGui.QWidget (UIProducts) self.centralwidget.setObjectName (_fromUtf8 ("centralwidgetGuiCodigo") self.lQLablidgetGuiCodigo = self.lQLablidgetGuiCodigo = self.lblCodigo.setGeometry (QtCore.QRect (20, 16, 56, 17)) self.lblCodigo.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblCodigo.setTextFormat (QtCore.Qt ).PlainText (QtCore.Qt ).PlainText (QtCore.Qt ).PlainText self.lblCodigo.setObjectName (_fromUtf8 ("lblCodigo")) self.lblPrice = QtGui.QLabel (self.centralwidget) self.lblPrice.setGeo metry (QtCore.QRect (260, 40, 56, 17)) self.lblPrice.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblPrice.setObjectName (_fromUtf8 ("lblPrice")) self.lblQuantity = QtGui.QLabel (self.centralwidget) self.lblAmount.setGeometry (QtCore.QRect (20, 46, 56, 17)) self.lblAmount.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblAmount.setObjectName (_fromUtf8 ("lbljectName ( _fromUtf8 (" lbljectCan) )) self.txtCode = QtGui.QLineEdit (self.centralwidget) self.txtCode.setGeometry (QtCore.QRect (90, 10, 113, 27)) self.txtCodigo.setObjectName (_fromUtf8 ("txtCodigo") ) self.txtPrice = QtGui.QLineEdit (self.centralwidget) self.txtPrice.setGeometry (QtCore.QRect (340, 40, 113, 27)) self.txtPrice.setObjectName (_fromUtf8 ("txtPrice")) self.txtQuantity = QtGui .QLineEdit (self. centralwidget) self.txtAmount.setGeometry (QtCore.QRect (90, 40, 113, 27)) self.txtAmount.setObjectName (_fromUtf8 ("txtAmount")) self.line = QtGui.QFrame (self.centralwidget ) self.line.setGeometry (QtCore.QRect (20, 110, 461, 16)) self.line.setFrameShape ( QtGui.QFrame.HLine) self.line.setFrameShadow (QtGui.QFrame.Sunken) self.line.setObjectName (_fromUtf8 ("line")) self.btSave = QtGui.QPushButton (self.centralwidget) self.btCoretry (QtGetry) self .btCoretry (QtGetry) .QRect (140, 80, 91, 27)) self.btSave.setMinimumSize (QtCore.QSize (91, 0)) self.btSave.setObjectName (_fromUtf8 ("btSave")) self.btUpdate = QtGui .QPush .Button (self. centralwidget) self.btUpdate.setGeometry (QtCore.QRect (250, 80, 101, 27)) self.btUpdate.setMinimumSize (QtCore.QSize (101, 0)) self.btUpdate.setObjectName (_fromUtf8 (") selfActualize .label = QtGui.QLabel (self.centralwidget) self.label.setGeometry (QtCore.QRect (190, 130, 121, 17)) self.label.setObjectName (_fromUtf8 ("label")) self.lblProduct = QtGui.QLabel (self.centralwidget) self.lblProduct.setGeometry (QtCore.QRect (260, 10, 56, 21)) self.lblProducto.setMaximumSize (QtCore.QSize (16777215, 21)) self.lblProduct.setObjectName (_fromUtf8 ("lblProduct" )) self.txtProduct = QtGui.QLineEdit (self.centralwidget) self.txtP product.setGeometry (QtCore.QRect (340, 10, 113, 27)) self.txtProduct.setObjectName (_fromUtf8 ("txtProduct")) self.tableWidget = QtGui.QTableWidget (self.centralwidget) self.tableWidget.setGeometry (QtCore. QRect (10, 170, 471, 131)) self.tableWidget.setWordWrap (True) self.tableWidget.setObjectName (_fromUtf8 ("tableWidget")) self.tableWidget.setColumnCount (0) self.tableWidget.setRowCount (0) UIProducts. setCentralWidget (self.centralwidget) self.menubar = QtGui.QMenuBar (UIProducts) self.menubar.setGeometry (QtCore.QRect (0, 0, 497, 27)) self.menubar.setObjectName (_fromUtf8 ("menubarductos").) setMenuBar (self.menubar) self.statusbar = QtGui.QStatusBar (UIProducts) self.statusbar.setObjectName (_fromUtf8 ("statusbar")) UIProducts.setStatusBar (self.statusbar) self.retranslateductosMUIProductosMenuctBrojectConnectUi (UIProctBrojectBrojectName) ) def retranslateductosMUIProductosMenuctBrojectConnectUi (UIProctBrojectBrojectName) ) (def re,translate,translate) : UIProducts.setWindowTitle (_translate ("UIProducts", "Produktliste", Keine)) self.lblCodigo.setText (_translate ("U IProducts "," Code ", None)) self.lblPrice.setText (_translate (" IProducts "," Price ", None)) self.lblQuantity.setText (_translate (" UIProducts "," Menge ", None)) self. btSave.setText (_translate ("UIProducts", "Save", None)) self.btUpdate.setText (_translate ("UIProducts", "Update List", None)) self.label.setText (_translate ("UIProducts", " Liste der Produkte ", Keine)) self.lblProducto.setText (_translate (" UIProductos "," Produkt ", Keine)) self.tableWidget.setSortingEnabled (True)Als nächstes erstellen wir eine weitere Datei für die im vorherigen definierte Designfunktionalität:
aus PyQt4 importieren QtCore aus PyQt4 importieren QtGui aus PyQt4.QtCore importieren * aus PyQt4.QtGui importieren * aus Produktliste importieren Ui_FrmProducts importieren sqlite3 importieren Sys-Klasse FrmProducts (QtGui.QMainWindow): def __init_in__ ). (self, parent) self.ui = Ui_FrmProducts () self.ui.setupUi (self) self.ui.btSave.clicked.connect (self.Save_click) self.ui.btUpdate.clicked.connect (self.Update_click) self . Datenbank starten () self.conn = Keine self.cursor = Keine # Wir starten die Datenbank und erstellen die Tabelle, falls sie nicht existiert def Datenbank starten (self): self.conn = sqlite3.connect ("dbproducts.bd") Cursor = self .conn.cursor () cursor.execute ("" "CREATE TABLE IF NOT EXISTS products (TEXT NOT NULL code, TEXT NOT NULL product, TEXT NOT NULL Menge, TEXT NOT NULL price)" "") def Save_click (self ): conn = sqlite3.connect ("dbproducts.bd") Cursor = conn.cursor () self.code = str (self.ui.txtTextCode ()) self.product = str (self.ui.txtProduct.text ()) self.quantity = str (self.ui.txtAmount.text ()) self.price = str (self.ui.txtPrice.text ()) self.register = (self.code, self.product, self. Menge, self.price) cursor.execute ("INSERT INTO products (code, product, Menge, price) VALUES (?,?,?,?)", self.register) conn.commit () self.ui.lineEdit. setText ("") conn.commit () QMessageBox.about (self, "Record saved", "Notice") def Update_click (self): conn = sqlite3.connect ("dbproductos.bd") cursor = conn.cursor () # self.con = sqlite3.connect ("dbproductos.bd") # Die angegebenen Daten werden aus der Tabelle cursor.execute ("SELECT Code, Produkt, Menge, Preis FROM Produkte") geladen table_info = cursor.fetchall () string_list = QStringList () database_table_column_count = 4 database_table_columns = {} database_table_items = [] self.ui.tableWidget.setColumnCount (database_table_column_count) self.number of rows = len (table_info) self.ui.tableWidget.setRowCount (self.numerodefi.setRowCount (self.numerodefi.set) numberoffi rows [0print)] für j im Bereich (self.number of rows): row = table_info [j] print j für i im Bereich (0, len (row)): item = row [i] print item item = str (item) newitem = QTableWidgetItem (item) self.ui.tableWidget.setItem (j, i , newitem) if __name__ == "__main__": app = QtGui.QApplication (sys.argv) myapp = FrmProducts () myapp.show () sys.exit (app.exec_ ())Das Ergebnis beim Ausführen des Codes ist das folgende:
Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben