Indholdsfortegnelse
Der er andre API'er at kunne oprette GUI -applikationer i Python for eksempel QT Designer som giver dig mulighed for at oprette flotte visuelle grænseflader, og derefter via PyQt -bibliotekerne automatisk generere den nødvendige kode for grænsefladerne i Python med kommandoen pyuic, hvad er en UI -kompilator til QT hvad der følger med PyQt -pakke.I denne vejledning opretter vi en visuel applikation til at forbinde en Sqlite 3 -database og definere funktionerne til at gemme og vise data.
Vi starter med at oprette databasen i Sqlite til dette, vi kan bruge Sqliteman -softwaren, der kan bruges i ethvert operativsystem. Vi kan downloade og installere det for at kunne administrere Sqlite version 3 databaser.
Derefter går vi til menuen Kontekst> Opret tabel og vi opretter produktbordet.
OPRET TABEL -produkter (TEKST IKKE NULL -kode, TEKST IKKE NULL -produkt, TEKST IKKE NULL -mængde, TEKST IKKE NULL -pris)For at programmere i Python vil vi bruge NetBeans i denne vejledning, vi skal bruge et plugin, som vi kan downloade fra Netbeans Plugins -webstedet.
Skift + ↓
Derefter klikker vi på knappen Installer for at aktivere pluginet, så genstarter vi NetBeans.Vi har mange egenskaber til at konfigurere hvert element, men i denne vejledning vil vi bruge de mest basale. Så vi tager hver etiket og trækker den til skærmen for at lade den stå i den position, vi ønsker.
Dernæst sætter vi tekstfelterne eller LineEdit, til hver enkelt tildeler vi et navn txtCode, txtProdukt, txt Mængde, txtPris. Disse vil være felterne i databasen med disse tekstbokse, vi vil indtaste data, som vi derefter vil gemme.
Dernæst sætter vi 2 Trykknap eller knapper en vil være btSave at indsætte data i databasen og andet btUpdate for at opdatere en liste med data.
Så tilføjer vi en tableWidget som vi også bliver nødt til at kigge efter i venstre kolonne, vi trækker det til skærmen og navngiver det tbl produktliste.
Derefter gemmer vi filen som productlist.ui. i mappen, hvor er projektet, som vi har oprettet med netbønner.
Vi åbner et terminalvindue for at konvertere filen fra QT produktliste.ui til python ved hjælp af følgende kommando:
puic4 productlist.ui> productlist.pyPython -koden for designet vil være som følger
# - * - kodning: utf -8 - * - # Formimplementering genereret fra læsning af ui -fil 'productlist.ui' # # Oprettet: søn 1. november 18:03:40 2015 # af: PyQt4 UI -kodegenerator 4.10.4 # # ADVARSEL! Alle ændringer i denne fil vil gå tabt! fra PyQt4 import QtCore, QtGui prøve: _fromUtf8 = QtCore.QString.fromUtf8 undtagen AttributeError: def _fromUtf8 (s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambigui (context, return, translate (kontekst, tekst, disambig, _encoding) undtagen 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 (_fromUtfoGoGoLoGoGoCoGoLoGoGoCoGoGoCoGoLoGoCoGoGoCoGoGoCoGoGoCoGoCoGoCoIgCoGoCoGoCoIgCoIgCoGoCgIgCoCoIgCgcgcgcgcgcgcgcGyCgcgcgcgcgyCg) self.lblCodigo.setGeometry (QtCore.QRect (20, 16, 56, 17)) self.lblCodigo.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblCodigo.setTextFormat (QtCore.Qt) .PlainText ( ) .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 ("lbl _fromUtf8 ("lbljectCan))) self.txtCode = QtGui.QLineEdit (self.centralwidget) self.txtCode.setGeometry (QtCore.QRect (90, 10, 113, 27)) self.txtCodigo.setObjectName (_fromUtf8 (") ) self.txtPrice = QtGui.QLineEdit (self.centralwidget) self.txtPrice.setGeometry (QtCore.QRect (340, 40, 113, 27)) self.txtPrice.setObjectName (_fromUtf8 ("txtPrice")) self.txtQuantity = .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) .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 (_fromUt8 (") 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 (_ ("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.setGe. QRect (10, 170, 471, 131)) self.tableWidget.setWordWrap (True) self.tableWidget.setObjectName (_fromUtf8 ("tableWidget")) self.tableWidget.setColumnCount (0) self.tableWidget.setRowCount (0) UIProduct. setCentralWidget (self.centralwidget) self.menubar = QtGui.QMenuBar (UIProducts) self.menubar.setGeometry (QtCore.QRect (0, 0, 497, 27)) self.menubar.setObjectName (_fromUtf8 ("menubarductos"). (self.menubar) self.statusbar = QtGui.QStatusBar (UIProducts) self.statusbar.setObjectName (_fromUtf8 ("statuslinje")) UIProducts.setStatusBar (self.statusbar) self.retranslateductosMUIProductosMenuctBrojectConnectUnitUnitBrojectConnectUnitUnitBrojectConnectUnnetBrojectConnectUnitBrojectConnectUnctrojectConnectUnitUctroUnctrojectConnectUnctrojectConnectUroUctroManctBrojectConnectUnctroUnctroUnctroUnctrojectConnectUnctroUctroUnctroUnctroUnctroUnctrojectConnectUctroUnctroUnctroUnctroUnctroUctroUtroUnctroUnctroUnctroUnctroUsupture : UIProducts.setWindowTitle (_translate ("UIProducts", "Product List", None)) self.lblCodigo.setText (_translate ("U IProducts "," Code ", None)) self.lblPrice.setText (_translate (" IPproducts "," 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", ") Liste over produkter ", ingen)) self.lblProducto.setText (_translate (" UIProductos "," Product ", None)) self.tableWidget.setSortingEnabled (True)Dernæst opretter vi en anden fil til designfunktionaliteten defineret i den foregående:
fra PyQt4 import QtCore fra PyQt4 import QtGui fra PyQt4.QtCore import * fra PyQt4.QtGui import * fra produktliste import Ui_FrmProducts import sqlite3 import sys klasse FrmProducts (QtGui.QMainWindow) (def __init.) Ingen. (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. Start Database () self.conn = Ingen self.cursor = Ingen # Vi starter databasen og opretter tabellen, hvis den ikke findes def Start Database (self): self.conn = sqlite3.connect ("dbproducts.bd") markør = self .conn.cursor () cursor.execute ("" "CREATE TABLE IF NOT EXISTS products (TEKST IKKE NULL kode, TEKST IKKE NULL produkt, TEKST IKKE NULL mængde, TEKST IKKE NULL pris)" "") 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. mængde, selvpriser) cursor.execute ("INSERT INTO products (code, product, amount, price) VALUES (?,?,?,?)", self.register) conn.commit () self.ui.lineEdit. setText ("") conn.commit () QMessageBox.about (self, "Record gemt", "Notice") def Update_click (self): conn = sqlite3.connect ("dbproductos.bd") cursor = conn.cursor () # self.con = sqlite3.connect ("dbproductos.bd") # De angivne data indlæses fra tabellen cursor.execute ("SELECT kode, produkt, mængde, pris FRA produkter") 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 lines = len (table_info) self.ui.tableWidget.setRowCount (. numberoffi rækker [0print)] for j i området (selv. antal rækker): række = table_info [j] print j for i in range (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_ ())Resultatet ved udførelse af koden vil være følgende: