Pyqt
Pyqt
self.setWindowTitle("Formulaire d'inscription")
self.setGeometry(300, 90, 600, 600)
self.centralWidget = QWidget(self)
self.setCentralWidget(self.centralWidget)
self.conn = mysql.connector.connect(
host="localhost",
user="root",
password="1234",
database="grh"
)
self.cursor = self.conn.cursor()
self.initUI()
def initUI(self):
layout = QVBoxLayout()
self.tab_widget = QTabWidget()
layout.addWidget(self.tab_widget)
# Inscription tab
inscription_tab = QWidget()
self.tab_widget.addTab(inscription_tab, "Inscription")
self.initInscriptionUI(inscription_tab)
self.centralWidget.setLayout(layout)
self.centralWidget.setLayout(layout)
def toggleDarkMode(self):
# Define dark mode stylesheet
dark_stylesheet = """
* {
background-color: #303030;
color: #ffffff;
}
QTabWidget::pane {
background-color: #303030;
}
QTabBar {
background-color: #303030;
color: #ffffff;
}
QTabBar::tab {
background-color: #404040;
color: #ffffff;
}
QTabBar::tab:selected {
background-color: #505050;
}
QHeaderView::section {
background-color: #303030;
color: #ffffff;
padding-left: 0px; /* Adjust padding or margin as needed */
margin-left: 0px; /* Adjust padding or margin as needed */
}
"""
if not self.dark_mode_enabled:
# Apply dark mode stylesheet to the entire application
self.setStyleSheet(dark_stylesheet)
self.tab_widget.setStyleSheet(dark_stylesheet)
self.employee_table.horizontalHeader().setStyleSheet(dark_stylesheet)
self.dark_mode_button.setText("Dark Mode: On")
self.dark_mode_enabled = True
else:
# Turn off dark mode
self.setStyleSheet("")
self.tab_widget.setStyleSheet("")
self.employee_table.horizontalHeader().setStyleSheet("")
self.dark_mode_button.setText("Dark Mode: Off")
self.dark_mode_enabled = False
self.titre = QLabel("Inscription")
self.titre.setFont(QFont("Arial", 12))
layout.addWidget(self.titre)
date_layout = QHBoxLayout()
date_layout.addWidget(self.dayComboBox)
date_layout.addWidget(self.monthComboBox)
date_layout.addWidget(self.yearComboBox)
layout.addLayout(date_layout)
buttons_layout = QHBoxLayout()
self.validerButton = QPushButton("Valider")
self.validerButton.clicked.connect(self.validerClicked)
self.annulerButton = QPushButton("Annuler")
self.annulerButton.clicked.connect(self.annulerClicked)
buttons_layout.addWidget(self.validerButton)
buttons_layout.addWidget(self.annulerButton)
layout.addLayout(buttons_layout)
def initEmployeeDataUI(self, tab):
layout = QVBoxLayout(tab)
self.employee_table = QTableWidget()
layout.addWidget(self.employee_table)
self.employee_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.update_button = QPushButton("Update")
self.update_button.clicked.connect(self.updateEmployeeData)
layout.addWidget(self.update_button)
def validerClicked(self):
nom = self.textFieldNom.text()
prenom = self.textFieldPrenom.text()
genre = "F"
if self.maleRadioButton.isChecked():
genre = "M"
jour = int(self.dayComboBox.currentText())
mois = self.monthComboBox.currentIndex() + 1
annee = int(self.yearComboBox.currentText())
dateNaissance = QDate(annee, mois, jour)
adresse = self.textAreaAddress.toPlainText()
salaire = self.textFieldSalaire.text()
contrat = self.acceptCheckBox.isChecked()
values = (nom, prenom, genre, dateNaissance.toString(Qt.ISODate), adresse,
salaire)
if not (nom and prenom and adresse and salaire):
QMessageBox.critical(self, "Erreur", "Veuillez remplir tous les
champs.")
return
if not contrat:
QMessageBox.critical(self, "Erreur", "Veuillez accepter les conditions
du contrat.")
return
try:
sql = "INSERT INTO employe (nom, prenom, genre, ddn, adresse, salaire)
VALUES (%s, %s, %s, %s, %s, %s)"
values = (nom, prenom, genre, dateNaissance.toString(Qt.ISODate),
adresse, salaire)
self.cursor.execute(sql, values)
self.conn.commit()
QMessageBox.information(self, "Success", "Data inserted into database
successfully.")
except mysql.connector.Error as err:
QMessageBox.critical(self, "Error", f"Failed to insert data into
database: {err}")
def annulerClicked(self):
self.textFieldNom.clear()
self.textFieldPrenom.clear()
self.maleRadioButton.setChecked(True)
self.textAreaAddress.clear()
self.dayComboBox.setCurrentIndex(0)
self.monthComboBox.setCurrentIndex(0)
self.yearComboBox.setCurrentIndex(0)
self.textFieldSalaire.clear()
self.acceptCheckBox.setChecked(False)
def updateEmployeeData(self):
try:
sql = "SELECT nom, prenom, genre, ddn, adresse, salaire FROM employe"
self.cursor.execute(sql)
employee_data = self.cursor.fetchall()
# Clear existing data in the table
self.employee_table.clearContents()
self.employee_table.setRowCount(0)
# Set column count and headers
column_count = len(employee_data[0]) if employee_data else 0
self.employee_table.setColumnCount(column_count)
headers = ["Nom", "Prenom", "Genre", "Date de Naissance", "Adresse",
"Salaire"]
self.employee_table.setHorizontalHeaderLabels(headers)
# Populate the table with fetched data
for row_index, row_data in enumerate(employee_data):
self.employee_table.insertRow(row_index)
for col_index, col_data in enumerate(row_data):
item = QTableWidgetItem(str(col_data))
self.employee_table.setItem(row_index, col_index, item)
except mysql.connector.Error as err:
QMessageBox.critical(self, "Error", f"Failed to fetch data from
database: {err}")
if __name__ == "__main__":
app = QApplication(sys.argv)
formulaire = Formulaire()
formulaire.show()
sys.exit(app.exec_())