Hilfe bei anzeige vom tkinter Tascherechner!!!

Fragen zu Tkinter.
Antworten
asdfghjkl
User
Beiträge: 1
Registriert: Sonntag 15. Juni 2014, 12:49

Ich muss für ein Schulprojekt mit Python Tkinter einen Taschenrechner ''bauen'' dessen Display folgendermaßen funktionieren soll.
Sagen wir ich möchte "5+6" rechnen, dann tippe ich auf die "5" welche daraufhin erscheint. Tippe ich dann auf das "+" soll es zwar gespeichert werden jedoch nicht erscheinen. Dann tippe ich die "6" ein und die zahl "5" verschwindet vom Display sodass nur noch die "6" zu sehen ist und wenn ich dann "=" eingebe soll da "11" stehen. Bei mir ist es nur so das der ganze Rechenweg auf dem Display erscheint d.h. "5+6=11".

Danke schonmal im vorhinein!
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

In letzter Zeit gab es hier eine Flut von Schülern welche Taschenrechner programmieren sollten. Benutze einfach die Suchfunktion.
Das Leben ist wie ein Tennisball.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Dazu gibts unzählige Musterlösungem in Delphi für diese Art von Taschenrechner.
Optimal um Stringverarbeitung, Datenkonvertierung und das notwendige Wissen um GUI einem näher zu bringen.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@asdfghjkl: Das ist vielleicht komplizierter als es auf den ersten Blick erscheint, denn man muss hier zwischen den Daten in der Anzeige und den internen Daten des Modells unterscheiden. Und man muss sich die Zustände klar machen in denen sich der Rechner befinden kann. Also zum Beispiel ein Zustand „Zahl erfassen” in dem Tastendrücke von Ziffern und vielleicht noch dem Dezimalpunkt/-komma diese zur aktuellen/angezeigten Zahl hinzufügen, während ein Tastendruck auf '+' diesen vielleicht abbrechen und in einen Zustand „binäre Operation erfassen” wechselt. In dem kann man durch drücken von anderen Operationstasten sich noch umentscheiden und durch Eingabe einer Ziffer gelangt man wieder in einen „Zahlen erfassen”-Zustand um den nächsten Operanden eingeben zu können. An geeigneter Stelle muss man sich dann noch überlegen wann und wie man die Operanden und Operationen speichert. Denn üblicherweise beherrschen auch die simpelsten Rechner die Rechenregeln bezüglich Punkt- vor Strichrechnung, das heisst man muss sich überlegen wie man bei einer beliebigen Rechnung dafür sorgt, dass die in der richtigen Reihenfolge ausgerechnet wird.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

BlackJack hat geschrieben: Denn üblicherweise beherrschen auch die simpelsten Rechner die Rechenregeln bezüglich Punkt- vor Strichrechnung, das heisst man muss sich überlegen wie man bei einer beliebigen Rechnung dafür sorgt, dass die in der richtigen Reihenfolge ausgerechnet wird.
Python ist z.B. so ein simpler Rechner, der Punkt- vor Strichrechnung beherscht.

@asdfghjkl:
Lass den Benutzer seine Eingaben machen, schreibe diese Eingaben alle in einen String und werte diesen mit der eval Funktion aus

Code: Alles auswählen

print( eval("3+2*7") ) # Ausgabe: 17
print( eval("(3+2)*7") ) # Ausgabe: 35
print( eval("(3+2 *7") ) # Ausgabe: SyntaxError
a fool with a tool is still a fool, www.magben.de, YouTube
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Der TO will/muss Calc nachprogrammieren, nix mit Term und so.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Antworten