Inhoudsopgave
Er zijn andere API's om te kunnen: maak GUI-applicaties in Python bijvoorbeeld QT-ontwerper waarmee je een mooi ogende visuele interface kunt maken en vervolgens via de PyQt-bibliotheken automatisch de benodigde code van de interfaces in Python kunt genereren met de opdracht pyuic, wat is een UI-compiler voor QT wat hoort erbij? PyQt-pakket.In deze tutorial zullen we een visuele applicatie maken om een Sqlite 3-database te verbinden en de functies definiëren om gegevens op te slaan en weer te geven.
We beginnen met het maken van de database in Sqlite hiervoor kunnen we de Sqliteman-software gebruiken die in elk besturingssysteem kan worden gebruikt. We kunnen het downloaden en installeren om Sqlite versie 3-databases te kunnen beheren.
Dan gaan we naar het menu Context> Tabel maken en we maken de productentabel.
MAAK TAFEL-producten (TEKST NIET NULL-code, TEKST NIET NULL-product, TEKST NIET NULL-hoeveelheid, TEKST NIET NULL-prijs)Om in Python te programmeren, zullen we NetBeans gebruiken in deze tutorial, we hebben een plug-in nodig die we kunnen downloaden van de Netbeans Plugins-website.
Shift + ↓
Vervolgens klikken we op de knop Installeren om de plug-in te activeren, waarna we NetBeans opnieuw starten.We hebben veel eigenschappen om elk element te configureren, maar in deze tutorial zullen we de meest elementaire gebruiken. Dus we nemen elk label en slepen het naar het scherm om het op de gewenste positie te laten.
Vervolgens zullen we de tekstvakken of LineEdit plaatsen, aan elk geven we een naam txtCode, txtProduct, txt Hoeveelheid, txtPrijs. Dit zijn de velden van de database met deze tekstvakken zullen we gegevens invoeren die we vervolgens zullen opslaan.
Vervolgens plaatsen we 2 Druk op de knop of knoppen een zal zijn btOpslaan om gegevens in de database in te voegen en andere btUpdate om een lijst met gegevens bij te werken.
Dan voegen we een toe tafelWidget die we ook in de linkerkolom zullen moeten zoeken, we slepen het naar het scherm en noemen het tbl producten lijst.
Vervolgens slaan we het bestand op als productlist.ui. in de map waar is het project waarmee we hebben gemaakt netbeans.
We openen een terminalvenster om het bestand te converteren van QT productlist.ui te python met behulp van de volgende opdracht:
puic4 productlist.ui> productlist.pyDe Python-code van het ontwerp is als volgt:
# - * - codering: utf-8 - * - # Formulierimplementatie gegenereerd door het lezen van ui-bestand 'productlist.ui' # # Gemaakt: zo 1 november 18:03:40 2015 # door: PyQt4 UI-codegenerator 4.10.4 # # WAARSCHUWING! Alle wijzigingen in dit bestand gaan verloren! van PyQt4 import QtCore, QtGui probeer: _fromUtf8 = QtCore.QString.fromUtf8 behalve AttributeError: def _fromUtf8 (s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambigui, verplaatsing (return vertalen (context, tekst, ondubbelzinnig maken, _encoding) behalve AttributeError: def _translate (context, tekst, ondubbelzinnig): return QtGui.QApplication.translate (context, tekst, ondubbelzinnig maken) klasse Ui_UIProducts (object): def setupUi (zelf, UIProducts): UIProducts.setObjectName (_fromUtf8 ("UIProductos")) UIProductos.resize (497, 374) self.centralwidget = QtGui.QWidget (UIProducts) self.centralwidget.setObjectName (_fromUtf8 ("centralwidgetGuiCodigo") self.lQLablidgetQGuiqCodigoblgetQGuiqCodigoblgetQGuiqCodigoblgetQGuiqCodigo 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 (_fromUtCodigo") ) self.txtPrice = QtGui.QLineEdit (self.centralwidget) self.txtPrice.setGeometry (QtCore.QRect (340, 40, 113, 27)) self.txtPrice.setObjectName (_fromUtf8 ("txtPrice")) self.txtGuantity = QtxtGuantity .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.HLin) self.line.setFrameShadow (QtGui.QFrame.Sunken) self.line.setObjectName (_fromUtf8 ("line")) self.btSave = QtGui.QPushButton (self.centralwidget) self.btCoretry) zelf .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 (UIProctBrojectBrojectNametrans) ) : UIProducts.setWindowTitle (_translate ("UIProducts", "Product List", Geen)) self.lblCodigo.setText (_translate ("U IProducts "," Code ", None)) self.lblPrice.setText (_translate (" IProducts "," Price ", None)) self.lblQuantity.setText (_translate (" UIProducts "," Quantity ", None)) self. btSave.setText (_translate ("UIProducts", "Save", None)) self.btUpdate.setText (_translate ("UIProducts", "Update List", None)) self.label.setText (_translate ("UIProducts", " Lijst met producten ", Geen)) self.lblProducto.setText (_translate (" UIProductos "," Product ", Geen)) self.tableWidget.setSortingEnabled (True)Vervolgens zullen we een ander bestand maken voor de ontwerpfunctionaliteit die in de vorige is gedefinieerd:
uit PyQt4 importeer QtCore uit PyQt4 importeer QtGui uit PyQt4.QtCore import * uit PyQt4.QtGui import * uit productlijst import Ui_FrmProducts import sqlite3 import sys class FrmProducts (QtGui.QMainWindow): def __init __). (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 . Database starten () self.conn = Geen self.cursor = Geen # We starten de database en maken de tabel als deze niet bestaat def Database starten (self): self.conn = sqlite3.connect ("dbproducts.bd") cursor = self .conn.cursor () cursor.execute ("" "MAAK TABLE ALS NIET BESTAAT producten (TEKST NIET NULL code, TEKST NIET NULL product, TEKST NIET NULL hoeveelheid, TEKST NIET NULL prijs)" "") 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. hoeveelheid, zelf.prijs) cursor.execute ("INSERT INTO products (code, product, hoeveelheid, prijs) VALUES (?,?,?,?)", self.register) conn.commit () self.ui.lineEdit. setText ("") conn.commit () QMessageBox.about (self, "Record opgeslagen", "Notice") def Update_click (self): conn = sqlite3.connect ("dbproductos.bd") cursor = conn.cursor () # self.con = sqlite3.connect ("dbproductos.bd") # De aangegeven gegevens worden geladen uit de tabel cursor.execute ("SELECT code, product, hoeveelheid, prijs FROM producten") 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.setRowfiunt. (setRowodeCount.self. aantaloffi rijen [0print)] voor j in bereik (zelf.aantal rijen): rij = table_info [j] print j voor i binnen bereik (0, len (rij)): item = rij [i] print item item = str (item) newitem = QTableWidgetItem (item) self.ui.tableWidget.setItem (j, i , nieuwitem) if __name__ == "__main__": app = QtGui.QApplication (sys.argv) mijnapp = FrmProducts () mijnapp.show () sys.exit (app.exec_ ())Het resultaat bij het uitvoeren van de code is het volgende: