Table des matières
Il existe d'autres API pour pouvoir créer des applications GUI en Python comme par exemple Concepteur QT qui vous permet de créer de belles interfaces visuelles, puis à travers les bibliothèques PyQt de générer automatiquement le code nécessaire des interfaces en Python avec la commande pyuique, Qu'est-ce qu'un Compilateur d'interface utilisateur pour QT ce qui vient avec Paquet PyQt.Dans ce tutoriel, nous allons créer une application visuelle pour connecter une base de données Sqlite 3 et définir les fonctions pour enregistrer et afficher les données.
Nous allons commencer par créer la base de données en Sqlite pour cela nous pouvons utiliser le logiciel Sqliteman qui peut être utilisé dans n'importe quel système d'exploitation. Nous pouvons le télécharger et l'installer pour pouvoir gérer les bases de données Sqlite version 3.
Ensuite, nous allons au menu Contexte> Créer une table et nous créons la table des produits.
CREATE TABLE products (TEXT NOT NULL code, TEXT NOT NULL product, TEXT NOT NULL quantité, TEXT NOT NULL price)Pour programmer en Python, nous utiliserons NetBeans dans ce tutoriel, nous aurons besoin d'un plugin que nous pouvons télécharger depuis le site Web Netbeans Plugins.
Maj + ↓
Ensuite, nous cliquerons sur le bouton Installer pour activer le plugin, puis nous redémarrerons NetBeans.Nous avons de nombreuses propriétés pour configurer chaque élément mais dans ce tutoriel nous utiliserons les plus basiques. Nous allons donc prendre chaque étiquette et la faire glisser sur l'écran pour la laisser dans la position souhaitée.
Ensuite, nous mettrons les zones de texte ou LineEdit, à chacune nous attribuons un nom txtCode, txtProduit, txt Quantité, txtPrix. Ce seront les champs de la base de données avec ces zones de texte nous entrerons des données que nous enregistrerons ensuite.
Ensuite, nous mettrons 2 Bouton ou des boutons un sera btEnregistrer pour insérer des données dans la base de données et d'autres btMise à jour pour mettre à jour une liste de données.
Ensuite, nous ajouterons un tableWidget que nous devrons également rechercher dans la colonne de gauche, nous le faisons glisser vers l'écran et le nommons liste de produits tbl.
Ensuite, nous enregistrons le fichier sous productlist.ui. dans le dossier où se trouve le projet que nous avons créé avec netbeans.
Nous ouvrons une fenêtre de terminal pour convertir le fichier de Liste de produits QT.ui en python à l'aide de la commande suivante :
puic4 liste de produits.ui> liste de produits.pyLe code Python de la conception sera le suivant
# - * - codage : utf-8 - * - # Implémentation de formulaire générée à partir de la lecture du fichier d'interface utilisateur 'productlist.ui' # # Créé : 1er novembre 18:03:40 2015 # par : générateur de code d'interface utilisateur PyQt4 4.10.4 # # ATTENTION! Toutes les modifications apportées dans ce fichier seront perdues! from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 sauf AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _transambigui (contexte, retour, déplacement.Guitext translate (context, text, disambig, _encoding) sauf 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 ("centralwidgetGuiCodigo") self.lQLablidgetbliqcentraliCodigo self.lQLablidgetLaqcentralligo) 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 (_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 (UIProducts) self.menubar.setGeometry (QtCore.QRect (0, 0, 497, 27)) self.menubar.setObjectName (_fromUtf8 ("menubarductos").) setMenuBar (self.menubar) self.statusbar = QtGui.QStatusBar (UIProducts) self.statusbar.setObjectName (_fromUtf8 ("statusbar")) UIProducts.setStatusBar (self.statusbar) self.retranslateductosMUIProductosMenuctBrojectConnectUi (UIProctBrojectBrojectBrojectName,UIProjectName) UI : UIProducts.setWindowTitle (_translate ("UIProducts", "Product List", None)) self.lblCodigo.setText (_translate ("U IProducts "," Code ", Aucun)) self.lblPrice.setText (_translate (" IProducts "," Prix ", Aucun)) self.lblQuantity.setText (_translate (" UIProducts "," Quantité ", Aucun)) self. btSave.setText (_translate ("UIProducts", "Save", None)) self.btUpdate.setText (_translate ("UIProducts", "Update List", None)) self.label.setText (_translate ("UIProducts", " Liste des produits ", Aucun)) self.lblProducto.setText (_translate (" UIProductos "," Produit ", Aucun)) self.tableWidget.setSortingEnabled (True)Ensuite, nous allons créer un autre fichier pour la fonctionnalité de conception définie dans le précédent :
depuis PyQt4 import QtCore depuis PyQt4 import QtGui depuis PyQt4.QtCore import * depuis PyQt4.QtGui import * depuis la liste de produits import Ui_FrmProducts import sqlite3 import sys class FrmProducts (QtGui.QMainWindow): def __init __ (self.it 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 = None self.cursor = None # Nous démarrons la base de données et créons la table si elle n'existe pas def Start Database (self): self.conn = sqlite3.connect ("dbproducts.bd") curseur = self .conn.cursor () cursor.execute ("" "CREATE TABLE IF NOT EXISTS products (TEXT NOT NULL code, TEXT NOT NULL product, TEXT NOT NULL quantité, TEXT NOT NULL price)" "") def Save_click (self ): conn = sqlite3.connect ("dbproducts.bd") curseur = 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, Quantity, price) VALUES (?,?,?,?)", self.register) conn.commit () self.ui.lineEdit. setText ("") conn.commit () QMessageBox.about (self, "Enregistrement enregistré", "Notice") def Update_click (self): conn = sqlite3.connect ("dbproductos.bd") curseur = conn.cursor () # self.con = sqlite3.connect ("dbproductos.bd") # Les données indiquées sont chargées à partir de la table curseur.execute ("SELECT code, produit, quantité, prix FROM produits") 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.tableCountWidget.setRowCount (self.setRowerode) numberoffi rows [0print)] for j in range (self.number of rows): row = table_info [j] affiche j pour i dans la plage (0, len (ligne)) : élément = ligne [i] affiche l'élément élément = str (élément) newitem = QTableWidgetItem (élément) self.ui.tableWidget.setItem (j, i , newitem) if __name__ == "__main__": app = QtGui.QApplication (sys.argv) myapp = FrmProducts () myapp.show () sys.exit (app.exec_ ())Le résultat lors de l'exécution du code sera le suivant :