Display Schrift Linksbündig

Fragen zu Tkinter.
Antworten
maggus
User
Beiträge: 3
Registriert: Donnerstag 14. Januar 2010, 18:30

hallo,

ich hätte ein kleines Problem, an dem ich allerdings jetzt schon ein weilchen dranhänge...
und zwar sollen zahlen die ich per Buttons eingebe in einem Display wiedergegeben werden...
nun ist dieses Programm ein Taschenrechner und der schreibt oftmals von links nach rechts und so soll es auch sein...
hatt irgendjmd eine Idee, wie das zu lösen ist, eigentlich stell ichs mir garnicht so schwer vor...

naja, wäre für jede Hilfe dankbar....
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Das müsstest du präzisieren:
- Mit welchem Widget hast du das Display realisiert?
- Was genau verstehst du unter "von links nach rechts"? Meinst du vielleicht (zusätzlich) linksbündig ausgerichtet?

Und zeig doch mal den Code, den du schon hast.
maggus
User
Beiträge: 3
Registriert: Donnerstag 14. Januar 2010, 18:30

also hier der Code... das ganze funktioniert wie ihr seht, über eine grafische Oberfläche die aus einzelnen Bildern besteht...
da das für die Schule ist und wir eigentlich nicht wirklich programmieren können, is das ganze sehr umständlich geschrieben....^^
mein Hauptproblem ist gerade nur:

im display selbst soll sich die schrift von links nach rechts aufbauen
(damit ist nicht die Display-Ausrichtung gemeint)



andere Probleme gibt es natürlich auch noch, aber da versuch ich mich jetzt ersma noch selber dran.


(edit: hab gerade gesehen das mir hier die Einrückungen flöten gehen. im Prog sindse natürlich vorhanden)

http://paste.pocoo.org/show/165762/

Edit (BlackJack): Quelltext ausgelagert.
BlackJack

@maggus: So lange Quelltexte bitte bei bei einem Paste-Service, zum Beispiel http://paste.pocoo.org/ ablegen. Kürzere kann man hier auch in entsprechende Code-Tags einfassen, damit die Formatierung nicht verlorengeht und Syntaxhighlighting gibt's auch.

Der Code ist überkompliziert, schwer zu verstehen und voll von unnötigen Wiederholungen. Bevor Du an der GUI weiterfeilst, solltest Du erst einmal die Logik etwas verständlicher implementieren.

Nicht vollständige Mängelliste:

Sternchenimport von `Tkinter`.

`Rechner` definiert nicht alle Attribute in der `__init__()`. Die Namen und Werte sind teilweise total nichtssagend. Was bedeuten die verschiedenen Zahlwerte, die man an `mode` binden kann? Weisst Du das selbst in einem Jahr noch?

`Rechner.next()` hat viel zuviel Copy'n'Paste-Code und ist schlecht erweiterbar.

Um Bedingungen braucht man keine Klammern. Insbesondere mit Klammern und ohne Leerzeichen zwischen dem Schlüsselwort und der Bedingung, sieht das wie ein Funktionsaufruf aus, wass es aber nicht ist.

Vor und nach Operatoren machen Leerzeichen das ganze einfacher lesbar.

Diese ganze zeichenweise Verarbeitung gehört IMHO nicht in die Rechner-Logik. Die sollte Methoden für die verschiedenen Aufgaben haben und nicht eine "Monstermethode", die Zeichenketten bzw. einzelne Zeichen interpretiert.

Die Getter in `Rechner` sind unpythonisch. Weglassen.

Warum hängt da eine 0 am Namen `Taschenrechner`?

`place()` sollte man nicht verwenden. Je nach verwendetem Betriebssystem und den jeweiligen Einstellungen von Schriftarten und -grössen, sowie der Auflösung, kann das nicht so aussehen wie's gewünscht ist, und sogar so schlimm verschoben angezeigt werden, dass das Programm nicht vernünftig bedienbar ist.

Warum hat `Taschenrechner0` Klassenattribute. `B=1983`? WTF!? Und `self.r` sollte `self.rechner` heissen.

Beim erstellen der Schaltflächen und dem laden der Bilder würde eine Schleife wieder viel von den Wiederholungen vermeiden.

Und die Methoden, die das Verhalten von den einzelnen Ereignissen implementieren sind auch zum Grossteil so ähnlich, dass man die Zusammenfassen kann. Im Grunde erfindest Du `Button` neu, so dass es sich lohnen würde das tatsächlich neu, in eine eigene `Button`-Klasse zu schreiben.
maggus
User
Beiträge: 3
Registriert: Donnerstag 14. Januar 2010, 18:30

erstmal danke für deine mühe...
zu meiner rechtfertigung muss ich sagen, dass der "grundcode" so von meinem lehrer kommt.
Im grunde hab ich nur die tasten 2-9 hinzugefügt und die operatoren -, *, / und %...
wir haben leider nur sehr wenige befehle zur verfügung und kennen uns auch kaum in dieser sprache aus,
d.h. drumrumarbeiten ist angesagt (oder auch: "copy & paste")....
das man diesen rechner eigentlich in 15 zeilen programmieren könnte is mir klar, nur geht das mit unseren kenntnissen nicht...
naja, danke für die liste.... ich freu mich schon drauf sie unserem kurs zu präsentieren....
Antworten