0% found this document useful (0 votes)
61 views5 pages

Pyqt

Uploaded by

Mehdi Benbarka
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views5 pages

Pyqt

Uploaded by

Mehdi Benbarka
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit,


QRadioButton, QComboBox, \
QTextEdit, QPushButton, QCheckBox, QMessageBox, QVBoxLayout, QWidget,
QHBoxLayout, QTabWidget, QTableWidget, QTableWidgetItem, QHeaderView,QLineEdit
from PyQt5.QtCore import QDate, Qt
from PyQt5.QtGui import QFont, QIcon
import mysql.connector
class Formulaire(QMainWindow):
def __init__(self):
super().__init__()

self.setWindowTitle("Formulaire d'inscription")
self.setGeometry(300, 90, 600, 600)

self.centralWidget = QWidget(self)
self.setCentralWidget(self.centralWidget)

self.dark_mode_enabled = False # Initialize dark mode state

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)

# Employee Data tab


employee_tab = QWidget()
self.tab_widget.addTab(employee_tab, "Data")
self.initEmployeeDataUI(employee_tab)

# Dark mode toggle button


self.dark_mode_button = QPushButton("Dark Mode: Off")
self.dark_mode_button.clicked.connect(self.toggleDarkMode) # Connect to
toggleDarkMode function
layout.addWidget(self.dark_mode_button)

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

def initInscriptionUI(self, tab):


layout = QVBoxLayout(tab)

self.titre = QLabel("Inscription")
self.titre.setFont(QFont("Arial", 12))
layout.addWidget(self.titre)

self.descriptionLabelNom = QLabel("Nom :")


layout.addWidget(self.descriptionLabelNom)
self.textFieldNom = QLineEdit()
layout.addWidget(self.textFieldNom)

self.descriptionLabelPrenom = QLabel("Prenom :")


layout.addWidget(self.descriptionLabelPrenom)
self.textFieldPrenom = QLineEdit()
layout.addWidget(self.textFieldPrenom)

self.descriptionLabelGender = QLabel("Gender :")


layout.addWidget(self.descriptionLabelGender)
self.maleRadioButton = QRadioButton("Male")
self.femaleRadioButton = QRadioButton("Female")
gender_layout = QHBoxLayout()
gender_layout.addWidget(self.maleRadioButton)
gender_layout.addWidget(self.femaleRadioButton)
layout.addLayout(gender_layout)

self.descriptionLabelDate = QLabel("Date :")


layout.addWidget(self.descriptionLabelDate)
self.dayComboBox = QComboBox()
self.monthComboBox = QComboBox()
self.yearComboBox = QComboBox()

# Populate day combobox


for i in range(1, 32):
self.dayComboBox.addItem(str(i))

# Populate month combobox


months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",
"Oct", "Nov", "Dec"]
self.monthComboBox.addItems(months)

# Populate year combobox


for i in range(2024, 1974, -1):
self.yearComboBox.addItem(str(i))

date_layout = QHBoxLayout()
date_layout.addWidget(self.dayComboBox)
date_layout.addWidget(self.monthComboBox)
date_layout.addWidget(self.yearComboBox)
layout.addLayout(date_layout)

self.descriptionLabelAddress = QLabel("Address :")


layout.addWidget(self.descriptionLabelAddress)
self.textAreaAddress = QTextEdit()
layout.addWidget(self.textAreaAddress)

self.descriptionLabelSalaire = QLabel("Salaire :")


layout.addWidget(self.descriptionLabelSalaire)
self.textFieldSalaire = QLineEdit()
layout.addWidget(self.textFieldSalaire)

# Button to attach document


self.attachButton = QPushButton("Attach Document")
layout.addWidget(self.attachButton)

self.acceptCheckBox = QCheckBox("Accepter les conditions du contrat")


layout.addWidget(self.acceptCheckBox)

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)

# Set section resize mode to stretch

self.employee_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

self.update_button = QPushButton("Update")
self.update_button.clicked.connect(self.updateEmployeeData)
layout.addWidget(self.update_button)

self.updateEmployeeData() # Fetch initial data on tab load

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}")

def closeEvent(self, event):


if self.conn.is_connected():
self.cursor.close()
self.conn.close()

if __name__ == "__main__":
app = QApplication(sys.argv)
formulaire = Formulaire()
formulaire.show()
sys.exit(app.exec_())

You might also like