Python :: Aufgabe #236 :: Lösung #2

2 Lösungen Lösungen öffentlich
#236

Windows Forms Taschenrechner

Anfänger - Python von paddlboot - 04.12.2019 um 17:09 Uhr
Erstelle mit Hilfe von Windows Forms einen Taschenrechner!

- Der Taschenrechner soll zwei Zahlen speichern können.
- Wie bei einem Taschenrechner üblich, sollen alle Zahleneingaben gesammelt werden bis der Operator gewählt wurde.
- Mit jedem Drücken einer Zahlentaste wird der Variable also eine Dezimalstelle hinzugefügt.
- Wenn ein Operator ausgewählt wurde, soll die erste eingegebene Zahl gespeichert werden, ebenso der Operator (in einer separaten Variable).
- Mit Drücken der Ergebnis Taste (=) soll das Ergebnis in der selben Textbox ausgegeben werden, wie die, in der die Zahlen eingegeben wurden.

Im Anhang ein Beispiel wie ich das gelöst habe.
#2
vote_ok
von Gisbert5020 (3120 Punkte) - 15.04.2020 um 16:06 Uhr
Quellcode ausblenden Python-Code
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication,QGridLayout,QLineEdit,QMainWindow,QPushButton,QVBoxLayout,QWidget

class Rechner(QMainWindow):

    def __init__(self):
        super().__init__()
        self.setWindowTitle("Rechner")
        self.setFixedSize(240, 275)
        self.vlayout = QVBoxLayout()
        self.centralwidget = QWidget(self)
        self.setCentralWidget(self.centralwidget)
        self.centralwidget.setLayout(self.vlayout)
        self.anzeige()
        self.tastenerstellen()

    def anzeige(self):
        self.anzeige = QLineEdit()      
        self.anzeige.setFixedHeight(35)
        self.anzeige.setAlignment(Qt.AlignRight)
        self.anzeige.setReadOnly(True)
        self.vlayout.addWidget(self.anzeige)

    def tastenerstellen(self):
        self.tasten = {}
        tastenlayout = QGridLayout()
        tasten = {
            "7": (0, 0),
            "8": (0, 1),
            "9": (0, 2),
            "+": (0, 3),

            "4": (1, 0),
            "5": (1, 1),
            "6": (1, 2),
            "-": (1, 3),

            "1": (2, 0),
            "2": (2, 1),
            "3": (2, 2),
            "*": (2, 3),

            "0": (3, 0),
            "C": (3, 1),
            "=": (3, 2),
            "/": (3, 3),
        }
        
        for text, pos in tasten.items():
            self.tasten[text] = QPushButton(text)
            self.tasten[text].setFixedSize(40, 40)
            self.tasten[text].pressed.connect(self.anzeigen)
            tastenlayout.addWidget(self.tasten[text], pos[0], pos[1])

        self.vlayout.addLayout(tastenlayout)

    def anzeigen(self):
        sender = self.sender()
        if sender.text() != "=" and sender.text() != 'C':
            self.anzeige.setText(self.anzeige.text()+sender.text())
        elif sender.text() == 'C':
            self.anzeige.setText('')
        else:
            self.anzeige.setText(str(eval(self.anzeige.text())))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    rechner=Rechner()
    rechner.show()
    app.exec_()

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben