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.Opplæringen Tverrplattformsprogrammer med Python, PyQT og QT Desginer 5, vi hadde startet hvordan du installerer og konfigurerer python, pyqt og qt Angi i denne opplæringen vil vi bruke PyQT 4 av stabilitetshensyn, den kan også brukes med PyQt 5-biblioteker .
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.
Fra det offisielle nettstedet kan vi laste ned versjonen for operativsystemet som passer oss for vår utvikling.
Deretter starter vi Sqliteman og går til menyen Fil> Ny fil og vi lager vår database dbproducts.db.
Så går vi til menyen Kontekst> Lag tabell og vi lager produktbordet.
SQL -koden kan hentes fra den samme programvaren ved å høyreklikke på tabellnavnet og bruke alternativet Beskriv tabell, vil den resulterende koden være følgende:
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.
Vi laster ned filen, vi pakker den ut, i mappen vil vi ha alle filene og avhengighetene vi kan legge til i NetBeans.
Deretter åpner vi Netbeans -programmet, vi trenger versjon 8.0.2 og går til menyen Verktøy> Plugin, så går vi til kategorien Nedlastet, og en dialogboks åpnes der vi velger alle pluginene vi laster ned med nøkkelen:
Skift + ↓
Deretter klikker vi på knappen Installer for å aktivere programtillegget, så starter vi NetBeans på nytt.Deretter åpner vi NetBeans og går til menyen Fil> Nytt prosjekt og Vi velger Python -alternativet og deretter Python Project.
Deretter vil vi tildele et navn til prosjektet vårt og versjonen av python som vil utføre koden, i dette tilfellet versjon 2.7.6.
Nå som vi har opprettet prosjektet, skal vi lage grensesnittet for dette, vi går til Qt designer, og vi vil lage følgende skjermbilde
Vi vil først opprette Qt Designer -prosjektet, gå til Fil> Nytt prosjekt -menyen og velg skjermtypen vi skal bruke, det vil være Hovedvindu.
Deretter legger vi 4 widget -etiketter, hvis vi ikke finner den i widgetboksen til venstre, må vi lete etter den.
I egenskapsboksen til høyre må vi tildele hver sitt respektive navn og deretter identifisere det, med kodekonvensjonene ville vi ha følgende navn lblKode, lblProdukt, lbl Antall Y lblPris.
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:
Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng