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?
Curses-Timer
Das ausrechnen von Minuten und Sekunden hätte ich wahrscheinlich in eine Zeile gequetscht:
Oder ist das schon zu kompakt und damit unverständlich?
Code: Alles auswählen
minutes, seconds = divmod((end - start).seconds, 60)
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
Zuletzt geändert von derdon am Sonntag 14. Dezember 2008, 19:22, insgesamt 1-mal geändert.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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.
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.
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/
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/