Innholdsfortegnelse
Det er andre APIer å kunne lage GUI -applikasjoner i Python for eksempel QT Designer som lar deg lage flotte visuelle grensesnitt, og deretter via PyQt -bibliotekene automatisk generere den nødvendige koden til grensesnittene i Python med kommandoen pyuic, hva er en UI -kompilator for QT hva følger med det PyQt -pakke.I denne opplæringen vil vi lage en visuell applikasjon for å koble til en Sqlite 3 -database og definere funksjonene for å lagre og vise data.
Vi starter med å lage databasen i Sqlite for dette kan vi bruke Sqliteman -programvaren som kan brukes i ethvert operativsystem. Vi kan laste ned og installere den for å kunne administrere Sqlite versjon 3 databaser.
Så går vi til menyen Kontekst> Lag tabell og vi lager produktbordet.
LAG TABELL -produkter (TEKST IKKE NULL -kode, TEKST IKKE NULL -produkt, TEKST IKKE NULL -mengde, TEKST IKKE NULL -pris)For å programmere i Python, vil vi bruke NetBeans i denne opplæringen, vi trenger en plugin som vi kan laste ned fra Netbeans Plugins -nettstedet.
Skift + ↓
Deretter klikker vi på knappen Installer for å aktivere programtillegget, så starter vi NetBeans på nytt.Vi har mange egenskaper for å konfigurere hvert element, men i denne opplæringen bruker vi de mest grunnleggende. Så vi tar hver etikett og drar den til skjermen for å la den stå i den posisjonen vi ønsker.
Deretter legger vi tekstboksene eller LineEdit, til hver enkelt tildeler vi et navn txtCode, txtProdukt, txt Antall, txtPris. Dette vil være feltene i databasen med disse tekstboksene vi legger inn data som vi deretter vil lagre.
Deretter legger vi 2 Trykknapp eller knapper en vil være btSave å sette inn data i databasen og annet btUpdate for å oppdatere en liste over data.
Deretter legger vi til en tableWidget som vi også må lete etter i den venstre kolonnen, drar vi den til skjermen og gir den et navn tbl produktliste.
Deretter lagrer vi filen som productlist.ui. i mappen hvor er prosjektet som vi opprettet med netbeans.
Vi åpner et terminalvindu for å konvertere filen fra QT productlist.ui til python ved å bruke følgende kommando:
puic4 productlist.ui> productlist.pyPython -koden til designet vil være som følger
# - * - koding: utf -8 - * - # Skjemaimplementering generert fra å lese ui -filen 'productlist.ui' # # Laget: 1. nov. 18:03:40 2015 # av: PyQt4 UI -kodegenerator 4.10.4 # # ADVARSEL! Alle endringer i denne filen vil gå tapt! fra PyQt4 importer QtCore, QtGui prøv: _fromUtf8 = QtCore.QString.fromUtf8 unntatt AttributeError: def _fromUtf8 (s): returner try: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambigui (context, return, translate (kontekst, tekst, disambig, _encoding) unntatt 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 (_fromUtfoGoGoGoGoGoCoGoGoGoGoCoGoGoGoGoCoGlidCoGoLoGoGoCoGoGoGoGoCoGoGoGoGoCoGoGoGoCoGoGoCoGoGoCoGoGoCoIgGoCoGoGoGoCoLgGoCoCgIgCoIgCoGoGoCgIgcGoGoCgCgcGyCgcgcglgcGyCgIgcgcgcgcgcGyCg) 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 ("l _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 ( "statuslinjen")) UIProducts.setStatusBar (self.statusbar) self.retranslateductosMUIProductosMenuctBrojectConnectUi (UIProctBrojectBrojectName)) def retranslateUi (selv, UIProducts) : UIProducts.setWindowTitle (_translate ("UIProducts", "Product List", None)) 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", ") List of Products ", None)) self.lblProducto.setText (_translate (" UIProductos "," Product ", None)) self.tableWidget.setSortingEnabled (True)Deretter lager vi en annen fil for designfunksjonaliteten definert i den forrige:
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 class FrmProducts (QtGui.QMainWindow) (def __init). def. (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 = None # Vi starter databasen og lager tabellen hvis den ikke finnes 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 -mengde, TEKST IKKE NULL -pris)" "") def Save_click (self ): conn = sqlite3.connect ("dbproducts.bd") markør = 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. mengde, egenpris) cursor.execute ("INSERT INTO products (code, product ,antal, pris) VERDIER (?,?,?,?)", 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") # De angitte dataene er lastet fra tabellen cursor.execute ("VELG kode, produkt, mengde, 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 (self. numberoffi rader [0print)] for j i området (selv. antall rader): rad = 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 når du utfører koden vil være følgende: