Exercice 13
1) - Ecrire une fonction en Python qui prends en entrée un couple (T, occ) composé d'un texte 'T' et d'une occurrence texte 'occ' et qui renvoie la position de l'occurrence 'occ' dans le texte 'T'. La fonction doit renvoyer -1 si l'occurrence n'existe pas dans le texte.
2) - Créer le code de l'interface graphique basée sur PyQt5 qui demande à l'utilisateur de saisir le texte 'T' et l'occurrence 'occ' sans utiliser Qt Designer avec le nommage orienté objet suivant:
- Nom du champ de texte T : self.Text
- Nom du champ d'occurrence : self.occ
- Nom du bouton de commande : self.btn_search
Comme le montre la figure suivante:
3) - En utilisant la question 1) créer la méthode qui réalise l'action du bouton 'btn_search'
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 |
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QPushButton, QLineEdit, QTextEdit import sys class MyWin(QWidget): def __init__(self): super().__init__() # charger les composants de la fenêtre self.initUI() def initUI(self): # paramétrage de la fenêtre principale self.setWindowTitle("Exercice illustré sur une feêtre PYQt5") self.setGeometry(100, 100, 550, 400) # création des labels lbl_title = QLabel("Recherche Occurrence ", self) lbl_title.setGeometry(120,10, 400, 30) lbl_title.setStyleSheet("font-size: 26px;") saisir_text = QLabel("Saisir Text : " , self) saisir_text.setGeometry(10,75, 200, 30) saisir_text.setStyleSheet("font-size: 18px;") saisir_occ = QLabel("Saisir Occ " , self) saisir_occ.setGeometry(10,200, 200, 30) saisir_occ.setStyleSheet("font-size: 18px;") self.lbl_result = QLabel("Result " , self) self.lbl_result.setGeometry(10,275, 400, 100) self.lbl_result.setStyleSheet("font-size: 18px;") # Création des champs de saisie self.Text = QTextEdit(self) self.Text.setGeometry(100, 75, 400, 100) self.Text.setStyleSheet("font-size: 18px;") self.occ = QLineEdit(self) self.occ.setGeometry(100,200, 400, 30) self.occ.setStyleSheet("font-size: 18px;") # Création du bouton de commande self.btn_search = QPushButton("Recher Occurrence", self) self.btn_search.setStyleSheet("font-size: 18px;") # associer l'action au bouton de commande self.btn_search.clicked.connect(self.action) self.btn_search.setGeometry(100,250, 400, 30) # méthode qui détermine l'index de la première occurrence def index_of_occurrence(self, T, occ): for i in range(len(T)): if T[i:i+len(occ)] == occ: return i return -1 # méthode qui réalise l'action du bouton def action(self): result = "" # récupération du texte saisie T = self.Text.toPlainText() occ = self.occ.text() index = self.index_of_occurrence(T, occ) if index == -1: result = "Occurrence non trouvée !" self.lbl_result.setText(result) else: result = f"L'occurrence '{occ}' se trouve à la position '{index}'" self.lbl_result.setText(result) # Exécution de l'application if __name__ == "__main__": app = QApplication([]) mywin = MyWin() mywin.show() sys.exit(app.exec_()) |
Younes Derfoufi
CRMEF OUJDA
Acheter sur Très Facile !