IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Qt5 remplacement du texte dans un widget


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2021
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2021
    Messages : 18
    Par défaut Qt5 remplacement du texte dans un widget
    Bonjour tout le monde

    Voila j'ai créé un petit programme qui analyse un texte après l'avoir copier
    ça fonctionne a peu près mais 'il m'affiche directement le dernier message

    en faite je voudrai qu'il affiche déjà un premier message puis qu'il le remplace par le second

    exemple si "Nono" et "chien" sont présent dans le texte copié
    premier message "nom présent"
    pause
    seconde message " espèce présente"

    comment puis réaliser cela ?

    voila ce que j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import pyperclip
    import time
    from PyQt5 import QtCore, QtGui, QtWidgets
     
    # texte pour test " bonjour je suis Nono le petit chien "
     
     
    class Ui_WizardPage(object):
     
        def pause(self):
            time_duration = 3.5
            time.sleep(time_duration)
     
        def trace(self):
            b = pyperclip.paste()
            b = str(b)
            b = b.replace("b'", "")
            texte = b.replace("'", "")
     
            if "Nono" in str(texte):
                self.textBrowser.setText(" nom présent ")
                self.textBrowser.setStyleSheet("color: rgb(0, 255, 0);")
                self.pause()
                if "chien " in str(texte):
                    self.textBrowser.setText(" espèce présent ")
                    self.textBrowser.setStyleSheet("color: rgb(0, 255, 0);")
                else:
                    self.textBrowser.setText(" espèce absente ")
                    self.textBrowser.setStyleSheet("color: rgb(255, 0, 0);")
     
            else:
                self.textBrowser.setText("! nom absent !")
                self.textBrowser.setStyleSheet("color: rgb(255, 0, 0);")
                self.pause()
     
     
     
     
     
        def setupUi(self, WizardPage):
            WizardPage.setObjectName("WizardPage")
            WizardPage.setEnabled(True)
            WizardPage.setMinimumSize(QtCore.QSize(300, 300))
            WizardPage.setMaximumSize(QtCore.QSize(300, 300))
            font = QtGui.QFont()
            font.setPointSize(12)
            WizardPage.setFont(font)
     
            self.pushButton = QtWidgets.QPushButton(WizardPage)
            self.pushButton.setGeometry(QtCore.QRect(30, 130, 241, 51))
            self.pushButton.setObjectName("pushButton")
            self.pushButton.clicked.connect(self.trace)
     
            self.textBrowser = QtWidgets.QTextBrowser(WizardPage)
            self.textBrowser.setGeometry(QtCore.QRect(30, 200, 241, 41))
            self.textBrowser.setObjectName("textBrowser")
     
            self.label = QtWidgets.QLabel(WizardPage)
            self.label.setGeometry(QtCore.QRect(10, 40, 271, 61))
            self.label.setAlignment(QtCore.Qt.AlignCenter)
            self.label.setObjectName("label")
     
            self.retranslateUi(WizardPage)
            QtCore.QMetaObject.connectSlotsByName(WizardPage)
     
        def retranslateUi(self, WizardPage):
            _translate = QtCore.QCoreApplication.translate
            WizardPage.setWindowTitle(_translate("WizardPage", "WizardPage"))
            self.pushButton.setText(_translate("WizardPage", "tester"))
            self.label.setText(_translate("WizardPage", "<html><head/><body><p align=\"center\">copier votre texte puis</p><p align=\"center\">cliquer sur tester</p></body></html>"))
     
     
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        WizardPage = QtWidgets.QWizardPage()
        ui = Ui_WizardPage()
        ui.setupUi(WizardPage)
        WizardPage.show()
        sys.exit(app.exec_())
    merci d'avance

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour

    on n'utilise jamais de sleep() ! Mais plutôt un timeur (QTimer)
    par exemple

    1) On stocke les réponses dans une variable "liste"
    Ui_WizardPage.reponse = ("le chien", "toto", "est vivant")

    2) On lance le timeur

    3) A chaque déclenchement, on récupère le 1er item, on l'affiche et le supprime de la liste "self.reponse". Arrêt du timeur lorsque la liste est vide.

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2021
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2021
    Messages : 18
    Par défaut
    merci pour ta réponse

    je t'avoue que je ne comprends pas trop comment fonctionne le timer

    je commence par récupérer comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        def trace(self):
            b = pyperclip.paste()
            b = str(b)
            b = b.replace("b'", "")
            texte = b.replace("'", "")
            Ui_WizardPage.reponse = []
            if "Nono" in str(texte):
                if "chien" in str(texte):
                    Ui_WizardPage.reponse.append("nom présent")
                    Ui_WizardPage.reponse.append("espère présente")
                else:
                    Ui_WizardPage.reponse.append("nom présent")
                    Ui_WizardPage.reponse.append("espère absente")
     
            else:
                Ui_WizardPage.reponse.append("nom absent")
     
            print(Ui_WizardPage.reponse)
    mais ensuite comment faire pour intégrer la fonction timer, je dois créer une nouvelle fonction ?

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Citation Envoyé par rg71800 Voir le message
    je ne comprends pas trop comment fonctionne le timer
    En fait, tu n'as pas suivi le moindre tuto Qt ? Qtimer va déclencher un événement comme tu utilises déjà à foison dans Qt, il n'y a pas de différence et rien de plus.
    self.pushButton.clicked.connect(self.trace) bien sûr si c'est du code que tu as copié sans comprendre les mécanismes de Qt, tu ne risques pas d'avancer.

    Pour le lancer, il suffit de faire une recherche web ou de simplement lire la doc Qt. Coder en Qt sans lire la doc ... je ne comprends comment cela est possible ; en tout cas, pas possible pour moi, car je ne suis pas un extralucide.

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2021
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2021
    Messages : 18
    Par défaut
    bonjour

    voila je ne suis remis la tête en place cette nuit et je suis arrivé a résoudre mon problème ce matin
    merci papajoker pour ton aiguillage

    voila mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    from PyQt5 import QtWidgets
    from PyQt5.QtWidgets import QApplication, QMainWindow
    from PyQt5 import QtCore
    import sys
     
    import pyperclip
    import time
    from PyQt5 import QtCore, QtGui, QtWidgets
     
     
    # texte pour test " bonjour je suis Nono le petit chien "
     
    class Ui_WizardPage(object):
     
        def printer(self):
            self.textBrowser.setText(self.reponse[0])
            del self.reponse[0]
            if len(self.reponse)==0:
                print("fini")
                self.timer.stop()
     
        def timer(self):
            self.timer = QtCore.QTimer()
            self.timer.timeout.connect(self.printer)
            self.timer.start(5000)
     
        def trace(self):
            b = pyperclip.paste()
            b = str(b)
            b = b.replace("b'", "")
            texte = b.replace("'", "")
            Ui_WizardPage.reponse = []
            if "Nono" in str(texte):
                if "chien" in str(texte):
                    Ui_WizardPage.reponse.append("nom présent")
                    Ui_WizardPage.reponse.append("espère présente")
                else:
                    Ui_WizardPage.reponse.append("nom présent")
                    Ui_WizardPage.reponse.append("espère absente")
     
            else:
                Ui_WizardPage.reponse.append("nom absent")
     
     
        def setupUi(self, WizardPage):
            WizardPage.setObjectName("WizardPage")
            WizardPage.setEnabled(True)
            WizardPage.setMinimumSize(QtCore.QSize(300, 300))
            WizardPage.setMaximumSize(QtCore.QSize(300, 300))
            font = QtGui.QFont()
            font.setPointSize(12)
            WizardPage.setFont(font)
     
            self.pushButton = QtWidgets.QPushButton(WizardPage)
            self.pushButton.setGeometry(QtCore.QRect(30, 130, 241, 51))
            self.pushButton.setObjectName("pushButton")
            self.pushButton.clicked.connect(self.trace)
            self.pushButton.clicked.connect(self.timer)
     
            self.textBrowser = QtWidgets.QTextBrowser(WizardPage)
            self.textBrowser.setGeometry(QtCore.QRect(30, 200, 241, 41))
            self.textBrowser.setObjectName("textBrowser")
     
            self.label = QtWidgets.QLabel(WizardPage)
            self.label.setGeometry(QtCore.QRect(10, 40, 271, 61))
            self.label.setAlignment(QtCore.Qt.AlignCenter)
            self.label.setObjectName("label")
     
            self.retranslateUi(WizardPage)
            QtCore.QMetaObject.connectSlotsByName(WizardPage)
     
        def retranslateUi(self, WizardPage):
            _translate = QtCore.QCoreApplication.translate
            WizardPage.setWindowTitle(_translate("WizardPage", "WizardPage"))
            self.pushButton.setText(_translate("WizardPage", "tester"))
            self.label.setText(_translate("WizardPage",
                                          "<html><head/><body><p align=\"center\">copier votre texte puis</p><p align=\"center\">cliquer sur tester</p></body></html>"))
     
     
    if __name__ == "__main__":
        import sys
     
        app = QtWidgets.QApplication(sys.argv)
        WizardPage = QtWidgets.QWizardPage()
        ui = Ui_WizardPage()
        ui.setupUi(WizardPage)
        WizardPage.show()
        sys.exit(app.exec_())

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Désolé d'avoir été un peu "méchant", mais on retient 100 fois mieux si on apprend par sois même qu'avec un simple copier coller. Et le but d'un codeur, c'est d'être autonome, donc autant commencer le plus tôt possible Si tu trouves par toi-même avec juste des directions données, alors c'est gagné.

    remarques:
    - pas top d'appeler ta fonction self.timer() comme self.timer ta variable.
    - self.pushButton.clicked.connect(self.timer) plutôt appeler directement ta fonction à la fin de ta fonction trace(), par un simple self.timer().
    - if len(self.reponse)==0: pas python ce code, écrire uniquement : if self.reponse:.

    Bon courage pour la suite.

Discussions similaires

  1. Programme de remplacement de texte dans des fichiers
    Par Invité4 dans le forum Linux
    Réponses: 13
    Dernier message: 12/11/2006, 16h06
  2. Remplacer un texte dans une cellule Excel à partir d'un point donné
    Par tonyC dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/04/2006, 19h05
  3. remplacer du texte dans un tableau généré
    Par jcaruana dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/02/2006, 16h36
  4. [Tkinter] ecrire un texte dans un widget entry
    Par thierry_b dans le forum Tkinter
    Réponses: 3
    Dernier message: 15/12/2005, 11h38
  5. [langage] Remplacer du texte dans un fichier
    Par Michaël dans le forum Langage
    Réponses: 9
    Dernier message: 11/03/2005, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo