Curses-Timer

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Samstag 13. Dezember 2008, 22:46

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?
BlackJack

Sonntag 14. Dezember 2008, 00:33

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?
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Sonntag 14. Dezember 2008, 14:18

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:
Zuletzt geändert von derdon am Sonntag 14. Dezember 2008, 19:22, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sonntag 14. Dezember 2008, 14:20

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.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Sonntag 14. Dezember 2008, 19:10

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/
Antworten