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 :

QTableWidget calculatrice 2


Sujet :

PyQt Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut QTableWidget calculatrice 2
    comment je peux faire une qui lire les valeure entrée par l'utilisateur dans les 4 colonnes et afficher la résultat dans la 5
    pour première ligne les somme, 2eme /, 3eme * , 4eme12.py[ATTtitrACH]419331[/ATTACH]12.py -


    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
    from PyQt5 import QtCore, QtGui, QtWidgets
     
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(800, 600)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
            self.tableWidget.setGeometry(QtCore.QRect(-5, 1, 561, 401))
            self.tableWidget.setRowCount(4)
            self.tableWidget.setColumnCount(5)
            self.tableWidget.setObjectName("tableWidget")
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 18))
            self.menubar.setObjectName("menubar")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
     
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
     
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
     
     
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je ne suis pas sûr d'avoir bien compris ce que tu cherches à faire, mais je vais essayer de te répondre.

    Je suppose que tu veux qu'un utilisateur rentre des nombres dans l'une des 4 premières cases (numérotées de 0 à 3) de n'importe quelle ligne, et donne la somme de ces nombres dans la 5ème case de la même ligne.

    Tout d'abord, modifier le fichier issu de QtDesigner est une très mauvaise idée, puisque chaque modification ultérieure dans QtDesigner supprimera tout ce que tu auras ajouté au clavier. Il faut créer un nouveau ficher qui contiendra la partie principale de ton programme, et qui importera le fichier issu de QtDesigner. En plus, Python ne supporte pas d'importer des noms de module comme "12": il faut le renommer. Donc:
    - j'ai renommé ton fichier "12.py" en "calcul_ui.py". Je n'ai rien changé à ce fichier, à part que tu peux simplement effacer tout ce qu'il y a à partir du "if __name__ ==...".
    - je crée un nouveau fichier (programme principal) appelé "calcul.py", qui importera "calcul_ui.py" à son début.

    Fichier "calcul.py":

    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
    #! /usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    from calcul_ui import Ui_MainWindow
     
    ##############################################################################
    class MainWindow(QtWidgets.QMainWindow):
     
        #=========================================================================
        def __init__(self, parent=None):
            super().__init__(parent)
     
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)
     
            # on remplit les cases avec des QTableWidgetItem
            for row in range(0, self.ui.tableWidget.rowCount()):
                for col in range(0, self.ui.tableWidget.columnCount()):
                    item = QtWidgets.QTableWidgetItem("")
                    self.ui.tableWidget.setItem(row, col, item)
     
            # chaque changement de valeur des cases lancera la méthode
            self.ui.tableWidget.itemChanged.connect(self.changedata)                
     
        #=========================================================================
        def changedata(self, item):
     
            # ligne et colonne ayant lancé la méthode
            row = item.row()
            col = item.column()
     
            # calcul
            res = 0
            for j in range(0, self.ui.tableWidget.columnCount()-1):
                x = self.ui.tableWidget.item(row, j).text().strip()
                if x!="":
                    res += float(x)
     
            # affichage dans la dernière colonne
            self.ui.tableWidget.item(row, self.ui.tableWidget.columnCount()-1).setText(str(res))    
     
    ##############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        window = MainWindow()
        window.show()
        sys.exit(app.exec_())
    Tu vois qu'il y a plusieurs choses importantes à ajouter:

    - créer une fenêtre comme une classe héritant de QMainWindow.

    - remplir les cases du QTableWidget avec des QTableWidgetItem: en effet, au départ, les cases sont vides!

    - faire que chaque changement de contenu des cases déclenchera les calculs et l'affichage du résultat. Le signal "itemChanged" sera lancé à la fin de l'édition avec la touche "entrée", on un changement de case à la souris.

    A l'usage de ce petit programme test (très simplifié!), on rentre des nombres dans n'importe quelle case, et le calcul est lancé pour que la dernière colonne affiche la somme des colonnes précédentes.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    bonjour

    merci beaucoup J'ai trouvé tout ce que je cherche dans ta réponse
    merci pour votre aide

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

Discussions similaires

  1. Aide à la réalisation d'une calculatrice en C
    Par Premium dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 17/11/2005, 16h52
  2. [Calculatrice TI82] Réaliser un jeu
    Par Zenol dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 07/11/2005, 18h40
  3. calculatrice operations >a 1 chiffre
    Par xtaze dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/10/2005, 19h33
  4. [Comparaison] : Capacités des calculatrices/ordinateurs
    Par Évariste Galois dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 02/08/2005, 16h06
  5. [AWT] Demande Explications prog calculatrice
    Par smag dans le forum Débuter
    Réponses: 3
    Dernier message: 07/07/2005, 16h06

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