Cuprins
Există și alte API-uri pe care le puteți face creați aplicații GUI în Python de exemplu Designer QT care vă permite să creați interfețe vizuale frumoase și apoi prin bibliotecile PyQt generați automat codul necesar al interfețelor din Python cu comanda pyuic, ce este un Compilator UI pentru QT ce vine cu el Pachetul PyQt.În acest tutorial vom crea o aplicație vizuală pentru a conecta o bază de date Sqlite 3 și a defini funcțiile de salvare și afișare a datelor.
Vom începe prin crearea bazei de date în Sqlite pentru aceasta putem folosi software-ul Sqliteman care poate fi utilizat în orice sistem de operare. Îl putem descărca și instala pentru a putea gestiona bazele de date Sqlite versiunea 3.
Apoi mergem la meniu Context> Creați tabel și creăm tabelul cu produse.
CREAȚI produse TABLE (cod TEXT NU NUL, produs TEXT NU NUL, cantitate TEXT NU NUL, preț TEXT NU NUL)Pentru a programa în Python, vom folosi NetBeans în acest tutorial, vom avea nevoie de un plugin pe care îl putem descărca de pe site-ul Netbeans Plugins.
Shift + ↓
Apoi vom face clic pe butonul Instalare pentru a activa pluginul, apoi vom reporni NetBeans.Avem multe proprietăți pentru a configura fiecare element, dar în acest tutorial le vom folosi pe cele mai elementare. Deci, vom lua fiecare etichetă și o vom trage pe ecran pentru a o lăsa în poziția dorită.
Apoi vom pune casetele de text sau LineEdit, fiecăruia îi atribuim un nume txtCode, txtProduct, txt Cantitate, txtPrice. Acestea vor fi câmpurile bazei de date cu aceste casete de text vom introduce date pe care apoi le vom salva.
În continuare vom pune 2 Apasa butonul sau butoane unul va fi btSave pentru a insera date în baza de date și altele btUpdate pentru a actualiza o listă de date.
Apoi vom adăuga un tableWidget că va trebui să căutăm și în coloana din stânga, o tragem pe ecran și o denumim lista de produse tbl.
Apoi salvăm fișierul ca productlist.ui. în folderul unde este proiectul cu care am creat fasole netă.
Deschidem o fereastră de terminal pentru a converti fișierul QT productlist.ui la python folosind următoarea comandă:
puic4 productlist.ui> productlist.pyCodul Python al designului va fi după cum urmează
. AVERTIZARE! Toate modificările făcute în acest fișier se vor pierde! din PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 exceptând AttributeError: def _fromUtf8 (s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambigui, context (return, context, return) traduce (context, text, dezambig, _encoding) cu excepția 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 (_fromUtf8 ("centralwidod") 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 (_fromUtfod (" ) 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.centralwid ) 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) .btCoretry (QtGetry) .QRect (140, 80, 91, 27)) self.btSave.setMinimumSize (QtCore.QSize (91, 0)) self.btSave.setObjectName (_fromUtf8 ("btSave")) self.btUpdate = Qt .QPush .Button (self. Centralwidget) self.btUpdate.setGeometry (QtCore.QRect (250, 80, 101, 27)) self.btUpdate.setMinimumSize (QtCore.QSize (101, 0)) self.btUpdate.setObjectName (_fromUt (") 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.setObjectName8 (_fromUtf ("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.setGeT. QRect (10, 170, 471, 131)) self.tableWidget.setWordWrap (True) self.tableWidget.setObjectName (_fromUtf8 ("tableWidget")) self.tableWidget.setColumnCount (0) self.tableWidget.setRowCount (0) UIProd. 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 ("statusbar")) UIProducts.setStatusBar (self.statusbar) self.retranslateductosMUIProductosMenuctBrojectConnectUrect : UIProducts.setWindowTitle (_translate ("UIProducts", "Lista produselor", 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", " Lista produselor ", None)) self.lblProducto.setText (_translate (" UIProductos "," Product ", None)) self.tableWidget.setSortingEnabled (True)În continuare vom crea un alt fișier pentru funcționalitatea de proiectare definită în cea anterioară:
din PyQt4 import QtCore din PyQt4 import QtGui din PyQt4.QtCore import * din PyQt4.QtGui import * din lista de produse import Ui_FrmProducts import sqlite3 import sys class FrmProducts (QtGui.QMainWindow): def __init __ (self. parent = None) (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 = Niciuna self.cursor = Niciuna # Începem baza de date și creăm tabelul dacă nu există Def Start Database (self): self.conn = sqlite3.connect ("dbproducts.bd") cursor = self .conn.cursor () cursor.execute ("" "CREAȚI TABELUL DACĂ NU EXISTĂ produse (cod TEXT NOT NULL, TEXT NOT NULL produs, TEXT NU NULL cantitate, TEXT NOT NULL preț)" "") 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. cantitate, self.price) cursor.execute ("INSERT INTO products (cod, produs, cantitate, preț) VALORI (?,?,?,?)", 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") # Datele indicate sunt încărcate din tabel cursor.execute ("SELECT cod, produs, cantitate, preț DIN PRODUSE") 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 (setRowCount) numberoffi rânduri [0print)] pentru j în interval (auto.număr de rânduri): rând = 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 , element nou) if __name__ == "__main__": app = QtGui.QApplication (sys.argv) myapp = FrmProducts () myapp.show () sys.exit (app.exec_ ())Rezultatul la executarea codului va fi următorul: