Applicazioni con database Sqlite, PyQT e QT Desginer

Sommario
Ci sono altre API per essere in grado di creare applicazioni GUI in Python Per esempio Designer QT che ti permette di creare interfacce visive di bell'aspetto, e quindi attraverso le librerie PyQt generare automaticamente il codice necessario delle interfacce in Python con il comando piuic, cos'è un Compilatore dell'interfaccia utente per QT cosa viene con esso? Pacchetto PyQt.

Il tutorial Applicazioni multipiattaforma con Python, PyQT e QT Desginer 5, abbiamo iniziato a installare e configurare python, pyqt e qt Designate in questo tutorial useremo PyQT 4 per motivi di stabilità, può essere utilizzato anche con le librerie PyQt 5 .
In questo tutorial creeremo un'applicazione visiva per connettere un database Sqlite 3 e definire le funzioni per salvare e visualizzare i dati.
Inizieremo creando il database in Sqlite per questo possiamo utilizzare il software Sqliteman che può essere utilizzato in qualsiasi sistema operativo. Possiamo scaricarlo e installarlo per poter gestire i database Sqlite versione 3.

Dal sito ufficiale possiamo scaricare la versione per il sistema operativo più adatta a noi per il nostro sviluppo.

Quindi avviamo Sqliteman e andiamo al menu File> Nuovo file e creiamo il nostro database dbproducts.db.
Poi andiamo al menu Contesto> Crea tabella e creiamo la tabella dei prodotti.

Il codice SQL può essere ottenuto dallo stesso software facendo clic destro sul nome della tabella e utilizzando l'opzione Descrivi tabella, il codice risultante sarà il seguente:
 Prodotti CREATE TABLE (codice TEXT NOT NULL, prodotto TEXT NOT NULL, quantità TEXT NOT NULL, prezzo TEXT NOT NULL)
Per programmare in Python, utilizzeremo NetBeans in questo tutorial, avremo bisogno di un plugin che possiamo scaricare dal sito Web Netbeans Plugins.

Scarichiamo il file, lo decomprimiamo, all'interno della cartella avremo tutti i file e le dipendenze da aggiungere a NetBeans.

Quindi apriamo il programma Netbeans, avremo bisogno della versione 8.0.2 e andiamo al menu Strumenti> Plugin, quindi andiamo alla scheda Downloaded e si aprirà una finestra di dialogo in cui selezioneremo tutti i plugin che scarichiamo con la chiave:

Maiusc +

Quindi faremo clic sul pulsante Installa per attivare il plug-in, quindi riavvieremo NetBeans.

Quindi apriamo NetBeans e andiamo al menu File> Nuovo progetto e Selezioniamo l'opzione Python e poi Python Project.

Quindi assegneremo un nome al nostro progetto e la versione di python che eseguirà il codice, in questo caso la versione 2.7.6.

Ora che abbiamo creato il progetto, creeremo l'interfaccia per questo andiamo su Qt designer e creeremo la seguente schermata

Creeremo prima il progetto Qt Designer, andremo nel menu File > Nuovo progetto e selezioneremo il tipo di schermo che andremo ad utilizzare, sarà Finestra principale.

Quindi metteremo 4 widget Label, se non riusciamo a trovarlo nella casella del widget a sinistra dovremo cercarlo.

Nella casella delle proprietà a destra dobbiamo assegnare a ciascuno il suo rispettivo nome e quindi identificarlo, con le convenzioni del codice avremmo i seguenti nomi lblCodice, lblProdotto, lb quantitàlblPrezzo.
Abbiamo molte proprietà per configurare ogni elemento, ma in questo tutorial useremo quelle più basilari. Quindi prenderemo ogni etichetta e la trascineremo sullo schermo per lasciarla nella posizione che vogliamo.
Successivamente metteremo le caselle di testo o LineEdit, a ciascuna assegniamo un nome txtCodice, txtProdotto, txt Quantità, txtPrezzo. Questi saranno i campi del database con queste caselle di testo inseriremo i dati che poi andremo a salvare.
Successivamente metteremo 2 Premi il bottone o pulsanti uno sarà btSave inserire dati nel database e altro btUpdate per aggiornare un elenco di dati.
Quindi aggiungeremo a tableWidget che dovremo cercare anche nella colonna di sinistra, lo trasciniamo sullo schermo e lo chiamiamo lista prodotti tbl.
Quindi salviamo il file come productlist.ui. nella cartella dove si trova il progetto con cui abbiamo creato netbeans.
Apriamo una finestra di terminale per convertire il file da QT productlist.ui in python usando il seguente comando:
 puic4 productlist.ui> productlist.py
Il codice Python del design sarà il seguente
 # - * - coding: utf-8 - * - # Implementazione del modulo generata dalla lettura del file ui 'productlist.ui' # # Creato: Sun Nov 1 18:03:40 2015 # da: PyQt4 UI code generator 4.10.4 # # AVVERTIMENTO! Tutte le modifiche apportate a questo file andranno perse! from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 tranne AttributeError: def _fromUtf8 (s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambiGui (context, return, displacement. translate (context, text, disambig, _encoding) tranne AttributeError: def _translate (context, text, disambig): return QtGui.QApplication.translate (context, text, disambig) class Ui_UIProducts (oggetto): def setupUi (self, UIProducts): UIProducts.setObjectName (_fromUtf8 ("UIProductos")) UIProductos.resize (497, 374) self.centralwidget = QtGui.QWidget (UIProducts) self.centralwidget.setObjectName (_fromUtf8 ("centralwidgetGuiCodigo") self.lQwidgetCodigo.central self.lblCodigo.setGeometry (QtCore.QRect (20, 16, 56, 17)) self.lblCodigo.setMaximumSize (QtCore.QSize (16777215, 17)) self.lblCodigo.setTextFormat (QtCore.Qt ).PlainText (QtCore. ).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 (UIProductos) self.menubar.setGeometry (QtCore.QRect (0, 0, 497, 27)) self.menubar.setObjectName (_fromUtf8 ("menubarductos").) setMenuBar (self.menubar) self.statusbar = QtGui.QStatusBar (UIProductos) self.statusbar.setNomeOggetto (_fromUtf8 ("barra di stato")) UIProducts.setStatusBar (self.statusbar) self.retranslateductosMUIProductosMenuctBrojectConnectUi (UIProctBroject)ProjectBroject)def. : UIProducts.setWindowTitle (_translate ("UIProducts", "Elenco prodotti", Nessuno)) 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", " Elenco dei prodotti ", Nessuno)) self.lblProducto.setText (_translate (" UIProductos "," Prodotto ", Nessuno)) self.tableWidget.setSortingEnabled (True)
Successivamente creeremo un altro file per la funzionalità di progettazione definita nel precedente:
 from PyQt4 import QtCore from PyQt4 import QtGui from PyQt4.QtCore import * from PyQt4.QtGui import * from product list import Ui_FrmProducts import sqlite3 import sys class FrmProducts (QtGui.QMainWindow): def __init __ (self. parent __). __ (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 = Nessuno self.cursor = Nessuno # Avviamo il database e creiamo la tabella se non esiste def Start Database (self): self.conn = sqlite3.connect ("dbproducts.bd") cursor = self .conn.cursor () cursor.execute ("" "CREATE TABLE IF NOT NULL prodotti (TEXT NOT NULL code, TEXT NOT NULL product, TEXT NOT NULL quantità, TEXT NOT NULL prezzo)" "") 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. quantità, self.price) cursor.execute ("INSERT INTO products (code, product, quantità, price) VALUES (?,?,?,?)", self.register) conn.commit () self.ui.lineEdit. setText ("") conn.commit () QMessageBox.about (self, "Record salvato", "Notice") def Update_click (self): conn = sqlite3.connect ("dbproductos.bd") cursor = conn.cursor () # self.con = sqlite3.connect ("dbproductos.bd") # I dati indicati vengono caricati dalla tabella cursor.execute ("SELECT codice, prodotto, quantità, prezzo FROM prodotti") 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.setnumerodefi (self.RowCount.setRowCount. numberoffi righe [0print)] per j nell'intervallo (self.numero di righe): riga = table_info [j] print j per i nell'intervallo (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_ ())
Il risultato durante l'esecuzione del codice sarà il seguente:

Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave