Exercice 17
1) - A l'aide de l'éditeur visuel Qt Designer, créez une application graphique qui demande à l'utilisateur de saisir le nom, l'email, et la section d'un étudiant et qui permet d'inserer les données à l'iade d'un bouton "Insert Data" comme le montre la figure suivante:
Avec le nommage suivant:
- lineEdit_name : Champ de saisie pour le nom de l'étudaint
- lineEdit_email : Champ de saisie pour l'email de l'étudaint
- comboBox_section : liste déroulante pour la sélection de la filière de l'étudaint
Notez bien qu'à ce stade on vous demande pas de créer la méthode qui réalise l'action du bouton de commande!
2) Créer une méthode nommée : 'insert_data()' qui permet de récupérer les données saisie et les insérer dans une table SQLite3 nommée 'student.sql' au sein d'une base de données 'SQLite3' nommée : 'database.db'
NB: La table 'student.sql' doit avoir comme attributs:
- id : Primary key Autoincrement
- name : text
- email: text
- section: text
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
from PyQt5 import QtCore, QtGui, QtWidgets import sqlite3 class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(473, 202) self.lbl_name = QtWidgets.QLabel(Form) self.lbl_name.setGeometry(QtCore.QRect(40, 10, 81, 16)) font = QtGui.QFont() font.setPointSize(12) self.lbl_name.setFont(font) self.lbl_name.setObjectName("lbl_name") self.lineEdit_name = QtWidgets.QLineEdit(Form) self.lineEdit_name.setGeometry(QtCore.QRect(140, 10, 291, 20)) self.lineEdit_name.setObjectName("lineEdit_name") self.lbl_email = QtWidgets.QLabel(Form) self.lbl_email.setGeometry(QtCore.QRect(40, 50, 81, 16)) font = QtGui.QFont() font.setPointSize(12) self.lbl_email.setFont(font) self.lbl_email.setObjectName("lbl_email") self.lineEdit_email = QtWidgets.QLineEdit(Form) self.lineEdit_email.setGeometry(QtCore.QRect(140, 50, 291, 20)) self.lineEdit_email.setObjectName("lineEdit_email") self.lbl_section = QtWidgets.QLabel(Form) self.lbl_section.setGeometry(QtCore.QRect(40, 90, 81, 16)) font = QtGui.QFont() font.setPointSize(12) self.lbl_section.setFont(font) self.lbl_section.setObjectName("lbl_section") self.comboBox_section = QtWidgets.QComboBox(Form) self.comboBox_section.setGeometry(QtCore.QRect(140, 90, 291, 22)) self.comboBox_section.setObjectName("comboBox_section") self.comboBox_section.addItem("") self.comboBox_section.addItem("") self.comboBox_section.addItem("") self.comboBox_section.addItem("") self.btn_action = QtWidgets.QPushButton(Form) self.btn_action.setGeometry(QtCore.QRect(140, 130, 291, 23)) font = QtGui.QFont() font.setPointSize(12) self.btn_action.setFont(font) self.btn_action.setObjectName("btn_action") # Add action to QPushButton self.btn_action.clicked.connect(self.insert_data) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.lbl_name.setText(_translate("Form", "Name")) self.lbl_email.setText(_translate("Form", "Email")) self.lbl_section.setText(_translate("Form", "Section")) self.comboBox_section.setItemText(0, _translate("Form", "Math")) self.comboBox_section.setItemText(1, _translate("Form", "Physique")) self.comboBox_section.setItemText(2, _translate("Form", "Informatique")) self.comboBox_section.setItemText(3, _translate("Form", "SVT")) self.btn_action.setText(_translate("Form", "Insert Data")) def insert_data(self): name = self.lineEdit_name.text() email = self.lineEdit_email.text() section = self.comboBox_section.currentText() try: # Connexion à la base de données SQLite3 conn = sqlite3.connect('database.db') cursor = conn.cursor() # Création de la table s'il n'existe pas cursor.execute(''' CREATE TABLE IF NOT EXISTS student ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT, section TEXT ) ''') # Insertion des données dans la table cursor.execute('INSERT INTO student (name, email, section) VALUES (?, ?, ?)', (name, email, section)) # Validation de la transaction conn.commit() # Fermeture de la connexion conn.close() # Affichage d'un message de réussite QtWidgets.QMessageBox.information(Form, 'Success', 'Data inserted successfully.') except Exception as e: # En cas d'erreur, affichage d'un message d'erreur QtWidgets.QMessageBox.critical(Form, 'Error', f'Error inserting data: {str(e)}') if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) |
Younes Derfoufi
CRMEF OUJDA
1 thought on “Solution Exercice 17 : Insertion des données sur une table SQLite3 depuis une fenêtre PyQt5”