Python :: Aufgabe #236 :: Lösung #2
2 Lösungen
#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.
- 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
von Gisbert5020 (3120 Punkte)
- 15.04.2020 um 16:06 Uhr
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
Seite 1 von 0
1
