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.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.
Dann gehen wir ins Menü Kontext> Tabelle erstellen und wir erstellen die Produkttabelle.
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.
Umschalt + ↓
Dann klicken wir auf die Schaltfläche Installieren, um das Plugin zu aktivieren, und starten dann NetBeans neu.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: