Semaine 4, jour 4, soir
This commit is contained in:
167
Semaine_04/Bibliotheque/gui/library.ui
Normal file
167
Semaine_04/Bibliotheque/gui/library.ui
Normal file
@@ -0,0 +1,167 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>520</width>
|
||||
<height>250</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Bibliothèque - Python</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>20</y>
|
||||
<width>480</width>
|
||||
<height>210</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="elideMode">
|
||||
<enum>Qt::ElideNone</enum>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab_add_book">
|
||||
<attribute name="title">
|
||||
<string>Ajouter Livre</string>
|
||||
</attribute>
|
||||
<widget class="QLineEdit" name="title_input">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>140</x>
|
||||
<y>40</y>
|
||||
<width>320</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="title_lb">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>40</y>
|
||||
<width>100</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Titre</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="author_input">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>140</x>
|
||||
<y>80</y>
|
||||
<width>320</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="author_lb">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>80</y>
|
||||
<width>100</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Auteur</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="save_btn">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>140</x>
|
||||
<y>120</y>
|
||||
<width>111</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enregistrer</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_search">
|
||||
<attribute name="title">
|
||||
<string>Recherche</string>
|
||||
</attribute>
|
||||
<widget class="QListView" name="results_view">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>60</y>
|
||||
<width>430</width>
|
||||
<height>100</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="search_lb">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>20</y>
|
||||
<width>181</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Recherche (par mot ou lettre)</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="search_input">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>210</x>
|
||||
<y>20</y>
|
||||
<width>240</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_delete">
|
||||
<attribute name="title">
|
||||
<string>Supprimer</string>
|
||||
</attribute>
|
||||
<widget class="QPushButton" name="delete_btn">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>360</x>
|
||||
<y>50</y>
|
||||
<width>100</width>
|
||||
<height>40</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Supprimer</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QComboBox" name="title_list">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>60</y>
|
||||
<width>320</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
11
Semaine_04/Bibliotheque/gui/signal_mgt.py
Normal file
11
Semaine_04/Bibliotheque/gui/signal_mgt.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from PyQt6.QtCore import QObject, pyqtSignal
|
||||
|
||||
class SignalManagement(QObject):
|
||||
change_list_signal = pyqtSignal()
|
||||
|
||||
def __init__(self, ui):
|
||||
super().__init__()
|
||||
self.ui = ui
|
||||
|
||||
def connect_signals(self):
|
||||
self.change_list_signal.connect(self.ui.refresh_title_list)
|
||||
77
Semaine_04/Bibliotheque/gui/ui_base.py
Normal file
77
Semaine_04/Bibliotheque/gui/ui_base.py
Normal file
@@ -0,0 +1,77 @@
|
||||
# Form implementation generated from reading ui file '.\gui\library.ui'
|
||||
#
|
||||
# Created by: PyQt6 UI code generator 6.10.2
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt6 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(520, 250)
|
||||
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.tabWidget = QtWidgets.QTabWidget(parent=self.centralwidget)
|
||||
self.tabWidget.setGeometry(QtCore.QRect(20, 20, 480, 210))
|
||||
self.tabWidget.setElideMode(QtCore.Qt.TextElideMode.ElideNone)
|
||||
self.tabWidget.setObjectName("tabWidget")
|
||||
self.tab_add_book = QtWidgets.QWidget()
|
||||
self.tab_add_book.setObjectName("tab_add_book")
|
||||
self.title_input = QtWidgets.QLineEdit(parent=self.tab_add_book)
|
||||
self.title_input.setGeometry(QtCore.QRect(140, 40, 320, 20))
|
||||
self.title_input.setObjectName("title_input")
|
||||
self.title_lb = QtWidgets.QLabel(parent=self.tab_add_book)
|
||||
self.title_lb.setGeometry(QtCore.QRect(20, 40, 100, 20))
|
||||
self.title_lb.setObjectName("title_lb")
|
||||
self.author_input = QtWidgets.QLineEdit(parent=self.tab_add_book)
|
||||
self.author_input.setGeometry(QtCore.QRect(140, 80, 320, 20))
|
||||
self.author_input.setObjectName("author_input")
|
||||
self.author_lb = QtWidgets.QLabel(parent=self.tab_add_book)
|
||||
self.author_lb.setGeometry(QtCore.QRect(20, 80, 100, 20))
|
||||
self.author_lb.setObjectName("author_lb")
|
||||
self.save_btn = QtWidgets.QPushButton(parent=self.tab_add_book)
|
||||
self.save_btn.setGeometry(QtCore.QRect(140, 120, 111, 41))
|
||||
self.save_btn.setObjectName("save_btn")
|
||||
self.tabWidget.addTab(self.tab_add_book, "")
|
||||
self.tab_search = QtWidgets.QWidget()
|
||||
self.tab_search.setObjectName("tab_search")
|
||||
self.results_view = QtWidgets.QListView(parent=self.tab_search)
|
||||
self.results_view.setGeometry(QtCore.QRect(20, 60, 430, 100))
|
||||
self.results_view.setObjectName("results_view")
|
||||
self.search_lb = QtWidgets.QLabel(parent=self.tab_search)
|
||||
self.search_lb.setGeometry(QtCore.QRect(20, 20, 181, 16))
|
||||
self.search_lb.setObjectName("search_lb")
|
||||
self.search_input = QtWidgets.QLineEdit(parent=self.tab_search)
|
||||
self.search_input.setGeometry(QtCore.QRect(210, 20, 240, 20))
|
||||
self.search_input.setObjectName("search_input")
|
||||
self.tabWidget.addTab(self.tab_search, "")
|
||||
self.tab_delete = QtWidgets.QWidget()
|
||||
self.tab_delete.setObjectName("tab_delete")
|
||||
self.delete_btn = QtWidgets.QPushButton(parent=self.tab_delete)
|
||||
self.delete_btn.setGeometry(QtCore.QRect(360, 50, 100, 40))
|
||||
self.delete_btn.setObjectName("delete_btn")
|
||||
self.title_list = QtWidgets.QComboBox(parent=self.tab_delete)
|
||||
self.title_list.setGeometry(QtCore.QRect(20, 60, 320, 20))
|
||||
self.title_list.setObjectName("title_list")
|
||||
self.tabWidget.addTab(self.tab_delete, "")
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
||||
|
||||
def retranslateUi(self, MainWindow):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "Bibliothèque - Python"))
|
||||
self.title_lb.setText(_translate("MainWindow", "Titre"))
|
||||
self.author_lb.setText(_translate("MainWindow", "Auteur"))
|
||||
self.save_btn.setText(_translate("MainWindow", "Enregistrer"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_add_book), _translate("MainWindow", "Ajouter Livre"))
|
||||
self.search_lb.setText(_translate("MainWindow", "Recherche (par mot ou lettre)"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_search), _translate("MainWindow", "Recherche"))
|
||||
self.delete_btn.setText(_translate("MainWindow", "Supprimer"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_delete), _translate("MainWindow", "Supprimer"))
|
||||
16
Semaine_04/Bibliotheque/gui/ui_init.py
Normal file
16
Semaine_04/Bibliotheque/gui/ui_init.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from logic import actions
|
||||
from gui.ui_library import
|
||||
|
||||
class Ui_Initialization:
|
||||
def __init__(self, ui):
|
||||
self.ui = ui
|
||||
|
||||
def connect_button(self):
|
||||
self.ui.save_btn.clicked.connect(self.ui.record_book)
|
||||
self.ui.delete_btn.clicked.connect(self.ui.delete_book)
|
||||
self.ui.change_list_signal.connect(self.ui.refresh_title_list)
|
||||
|
||||
self.ui.search_input.textChanged.connect(self.ui.search_book)
|
||||
|
||||
def fulfill_list(self):
|
||||
self.ui.title_list.addItems(actions.list_titles())
|
||||
57
Semaine_04/Bibliotheque/gui/ui_library.py
Normal file
57
Semaine_04/Bibliotheque/gui/ui_library.py
Normal file
@@ -0,0 +1,57 @@
|
||||
from Semaine_04.Bibliotheque.gui.signal_mgt import SignalManagement
|
||||
from logic import actions
|
||||
from gui.ui_init import Ui_Initialization
|
||||
from gui.ui_base import Ui_MainWindow
|
||||
from PyQt6.QtWidgets import QMessageBox
|
||||
from PyQt6.QtGui import QStandardItemModel, QStandardItem
|
||||
|
||||
class Ui_Library(Ui_MainWindow):
|
||||
##### Méthode de mise à jour de la liste des titres avec QTSignal
|
||||
|
||||
def setupUi(self, MainWindow):
|
||||
super().setupUi(MainWindow)
|
||||
ui_init = Ui_Initialization(self)
|
||||
ui_init.connect_button()
|
||||
ui_init.fulfill_list()
|
||||
|
||||
self.signal_mgt = SignalManagement(self)
|
||||
self.signal_mgt.connect_signals()
|
||||
|
||||
def record_book(self):
|
||||
title = self.title_input.text()
|
||||
author = self.author_input.text()
|
||||
message = actions.register_book(title, author)
|
||||
QMessageBox.information(None, "Nouvel enregistrement", message)
|
||||
# self.refresh_title_list()
|
||||
self.signal_mgt.change_list_signal.emit()
|
||||
|
||||
def delete_book(self):
|
||||
title = self.title_list.currentText()
|
||||
message = actions.delete_book(title)
|
||||
QMessageBox.information(None, "Suppression confirmée", message)
|
||||
# self.refresh_title_list()
|
||||
self.signal_mgt.change_list_signal.emit()
|
||||
|
||||
def refresh_title_list(self):
|
||||
self.title_list.clear()
|
||||
self.title_list.addItems(actions.list_titles())
|
||||
|
||||
def search_book(self):
|
||||
word = self.search_input.text()
|
||||
if len(word) == 1:
|
||||
results = actions.search_by_letter(word)
|
||||
self.display_list_view(results)
|
||||
return
|
||||
if len(word) > 1:
|
||||
results = actions.search_by_word(word)
|
||||
self.display_list_view(results)
|
||||
return
|
||||
|
||||
def display_list_view(self, results):
|
||||
self.model = QStandardItemModel()
|
||||
self.results_view.setModel(self.model)
|
||||
if isinstance(results, str):
|
||||
self.model.appendRow(QStandardItem(results))
|
||||
else:
|
||||
for book in results:
|
||||
self.model.appendRow(QStandardItem(str(book)))
|
||||
Reference in New Issue
Block a user