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 :

PyQt QPushButton et QLineEdit [QtGui]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 15
    Par défaut PyQt QPushButton et QLineEdit
    bonjour j'suis nouveau
    j'ai une préoccupation ça fait quelques semaines que je débute avec pyqt et je voulais créer une calculatrice. cependant je me confronte a un problème : je n'arrive pas a concaténer les chiffres sur lesquels je clique dans mon QlineEdit. des solutions svp. merci

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je ne comprends pas la question: on tape une formule dans le QLineEdit, et on récupère ce qu'on a tapé avec la méthode .text() pour faire le calcul avec eval(...). L'affichage du résultat peut se faire dans un QLabel par exemple.

    Que vient faire la "concaténation" là-dedans?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 15
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    Je ne comprends pas la question: on tape une formule dans le QLineEdit, et on récupère ce qu'on a tapé avec la méthode .text() pour faire le calcul avec eval(...). L'affichage du résultat peut se faire dans un QLabel par exemple.

    Que vient faire la "concaténation" là-dedans?
    effet, je voudrais que quand je clique deux fois sur un par exemple j'obtiens : 11 mais au lieu de ça j'ai toujours 1 après avoir cliquer sur la même touche

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 15
    Par défaut
    Citation Envoyé par Syntcpip Voir le message
    effet, je voudrais que quand je clique deux fois sur un par exemple j'obtiens : 11 mais au lieu de ça j'ai toujours 1 après avoir cliquer sur la même touche
    Je peux pas avoir 123 dans mon champs de texte si je tape sur les boutons que j'ai créé

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Je n'avais pas compris que tu faisais un clavier de calculatrice.

    Voilà un petit code à titre de source d'inspiration. Je n'ai mis que les 3 chiffres 1,2 et 3 et il faudra compléter avec toutes les touches qui manquent:

    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
    # -*- coding: utf-8 -*-
     
    import sys
    from time import sleep
    from functools import partial
    from PyQt5 import (QtWidgets, QtCore)
     
    class Calcul(QtWidgets.QWidget) :
     
        def __init__(self, parent = None) :
            super().__init__(parent)
     
            self.lineEdit = QtWidgets.QLineEdit(self)
     
            self.bouton1 = QtWidgets.QPushButton("1", self)
            self.bouton1.clicked.connect(partial(self.ajoute, "1"))
     
            self.bouton2 = QtWidgets.QPushButton("2", self)
            self.bouton2.clicked.connect(partial(self.ajoute, "2"))
     
            self.bouton3 = QtWidgets.QPushButton("3", self)
            self.bouton3.clicked.connect(partial(self.ajoute, "3"))
     
            self.boutonC = QtWidgets.QPushButton("Calculer!", self)
            self.boutonC.clicked.connect(self.calcul)
     
            posit = QtWidgets.QGridLayout()
            posit.addWidget(self.lineEdit, 0, 0, 1, 3)
            posit.addWidget(self.bouton1, 1, 0)
            posit.addWidget(self.bouton2, 1, 1)
            posit.addWidget(self.bouton3, 1, 2)
            posit.addWidget(self.boutonC, 2, 0, 1, 3)
            self.setLayout(posit)
     
        def ajoute(self, i):
            indcur = self.lineEdit.cursorPosition()
            text = self.lineEdit.text()
            text = text[:indcur] + i + text[indcur:]
            self.lineEdit.setText(text)
            self.lineEdit.setCursorPosition(indcur+1)
     
        def calcul(self):
            text = self.lineEdit.text()
            result = str(eval(text))
            QtWidgets.QMessageBox.information(self, 
                "Résultat", 
                result)
     
    if __name__ == "__main__" :
        app = QtWidgets.QApplication(sys.argv)
        fen = Calcul()
        fen.show()
        sys.exit(app.exec_())

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 15
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Je n'avais pas compris que tu faisais un clavier de calculatrice.

    Voilà un petit code à titre de source d'inspiration. Je n'ai mis que les 3 chiffres 1,2 et 3 et il faudra compléter avec toutes les touches qui manquent:

    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
    # -*- coding: utf-8 -*-
     
    import sys
    from time import sleep
    from functools import partial
    from PyQt5 import (QtWidgets, QtCore)
     
    class Calcul(QtWidgets.QWidget) :
     
        def __init__(self, parent = None) :
            super().__init__(parent)
     
            self.lineEdit = QtWidgets.QLineEdit(self)
     
            self.bouton1 = QtWidgets.QPushButton("1", self)
            self.bouton1.clicked.connect(partial(self.ajoute, "1"))
     
            self.bouton2 = QtWidgets.QPushButton("2", self)
            self.bouton2.clicked.connect(partial(self.ajoute, "2"))
     
            self.bouton3 = QtWidgets.QPushButton("3", self)
            self.bouton3.clicked.connect(partial(self.ajoute, "3"))
     
            self.boutonC = QtWidgets.QPushButton("Calculer!", self)
            self.boutonC.clicked.connect(self.calcul)
     
            posit = QtWidgets.QGridLayout()
            posit.addWidget(self.lineEdit, 0, 0, 1, 3)
            posit.addWidget(self.bouton1, 1, 0)
            posit.addWidget(self.bouton2, 1, 1)
            posit.addWidget(self.bouton3, 1, 2)
            posit.addWidget(self.boutonC, 2, 0, 1, 3)
            self.setLayout(posit)
     
        def ajoute(self, i):
            indcur = self.lineEdit.cursorPosition()
            text = self.lineEdit.text()
            text = text[:indcur] + i + text[indcur:]
            self.lineEdit.setText(text)
            self.lineEdit.setCursorPosition(indcur+1)
     
        def calcul(self):
            text = self.lineEdit.text()
            result = str(eval(text))
            QtWidgets.QMessageBox.information(self, 
                "Résultat", 
                result)
     
    if __name__ == "__main__" :
        app = QtWidgets.QApplication(sys.argv)
        fen = Calcul()
        fen.show()
        sys.exit(app.exec_())
    Merci beaucoup j'vais essayer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [QtGui] Interférence de signal entre QLineEdit et QPushButton
    Par VinsS dans le forum PyQt
    Réponses: 1
    Dernier message: 11/01/2012, 12h47
  2. [PyQt] [py2exe]
    Par Zorro dans le forum Py2exe
    Réponses: 2
    Dernier message: 05/05/2006, 13h36
  3. Réponses: 1
    Dernier message: 28/11/2005, 23h20
  4. [PyQt] Qt Designer et Qpixmap
    Par parp1 dans le forum PyQt
    Réponses: 2
    Dernier message: 17/06/2005, 12h04
  5. [PyQt] QImage
    Par Jbx 2.0b dans le forum PyQt
    Réponses: 1
    Dernier message: 01/02/2005, 23h06

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