Seite 1 von 1

Curses-Timer

Verfasst: Samstag 13. Dezember 2008, 22:46
von derdon
Hallo,

hab einen kleinen Zeitstopper geschrieben, der curses als TUI benutzt. Hier der Code. Bedient wird ganz einfach mit der Leertaste:

1. Mal gedrückt = Stoppuhr starten
2. Mal gedrückt = Stoppuhr wird gestoppt, Differenz wird angezeigt
3. Mal gedrückt = Zeiten werden zurückgesetzt, die gemessenen / errechneten Daten werden vom Bildschirm gelöscht

Nach dem dritten Drücken kann der ganze Spaß wieder von Vorne beginnen. Gibt noch ein Problem: das Format von der Ausgabe bei "Diference" gefällt mir nicht (kein datetime-Objekt, sondern String), wie kann man das besser machen?

Verfasst: Sonntag 14. Dezember 2008, 00:33
von BlackJack
Das ausrechnen von Minuten und Sekunden hätte ich wahrscheinlich in eine Zeile gequetscht:

Code: Alles auswählen

                minutes, seconds = divmod((end - start).seconds, 60)
Oder ist das schon zu kompakt und damit unverständlich?

Verfasst: Sonntag 14. Dezember 2008, 14:18
von derdon
Danke BlackJack, ich finds nicht unverständlich. Es ist meiner Meinung nach besser divmod zu benutzen als zwei Operationen hintereinander auszuführen. Ist ja ein riesengroßes Kompliment für mich, wenn das das einzige ist, was du verbessern würdest :lol:

Verfasst: Sonntag 14. Dezember 2008, 14:20
von Hyperion
Hallo,

ich würde noch vorschlagen, dass man die laufende Zeit sieht, während man wartet. (z.B. in Zeile 2 einschieben). Das vermittelt einem mehr das Gefühl, dass da "was" läuft im Hintergrund.

Verfasst: Sonntag 14. Dezember 2008, 19:10
von derdon
Update: Formatierung der Zeit bei der Differenz: http://paste.pocoo.org/show/95357/

Hyperion: Die Idee hatte ich von Anfang an auf meiner ToDo-Liste. Muss ich das mit Threading machen? Eine Endlosschleife innerhalb der Endlosschleife funktioniert nicht, dann kann ncurses nicht mehr auf Tastatureingaben reagieren. Ich brauche ja 2 Threads: einen, der die aktuelle Uhrzeit ausgibt (mit sleep(1) dahinter) und einen, der auf Tastatureingaben wartet (die "Mainloop" von ncurses). Hab ich das so richtig verstanden?

EDIT: Code lesbarer / verständlicher gemacht, siehe: http://paste.pocoo.org/compare/95357/95360/