Seite 1 von 1

countdown **brauche hilfe bitte ganz unten gucken**

Verfasst: Montag 21. Januar 2008, 19:41
von SonGuko
hi,
ich will mir ein countdownprogramm erstellen, das ähnlich diesm hier ist:
http://paste.pocoo.org/show/22108/
nur ich will es etwas verändern. allerdings kenn ich mich mit python noch nicht soo gut aus und deshalb brauch ich euch profis :)
und zwar will ich ersteinmal die eingabe in minuten haben und die ausgabe
soll nicht mehr sekunden/millisekunden sondern minuten/sekunden sein.
zudem hätte ich gerne neben den start buttons jeweils eine leere zeile wo man einfach was reinschreiben kann.
wäre echt sehr geil wenn ihr mir helfen könntet :D


EDIT by Gerold: Code ausgelagert:

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

Re: countdown

Verfasst: Montag 21. Januar 2008, 20:18
von gerold
SonGuko hat geschrieben:und zwar will ich ersteinmal die eingabe in minuten haben und die ausgabe soll nicht mehr sekunden/millisekunden sondern minuten/sekunden sein.
zudem hätte ich gerne neben den start buttons jeweils eine leere zeile wo man einfach was reinschreiben kann.
Hallo SonGuko!

Der erste Wunsch ist kein Problem. Ändere Zeile 73 so um:

Code: Alles auswählen

diff_seconds = int(self.txt_startvalue.GetValue()) * 60
Die Ausgabe wird schon schwieriger. ;-)

Zeile 60:

Code: Alles auswählen

new_value = "%6i min. %6i sec." % (diff.seconds // 60, diff.seconds % 60)
Zeile 62:

Code: Alles auswählen

new_value = "%6i Sekunden %02i" % (0, 0)
Die Zeile die nebenan stehen soll... Da weiß ich nicht wirklich was du willst.

mfg
Gerold
:-)

Verfasst: Montag 21. Januar 2008, 22:00
von SonGuko
ok vielen dank erstmal :D
ok für den zweiten wunsch mach ich mal nen bildchen :)


Bild

Verfasst: Montag 21. Januar 2008, 22:18
von gerold
Hallo SonGuko!

Zeile 50; einfügen:

Code: Alles auswählen

        self.txt_note = wx.TextCtrl(self, size = (150, -1))
        hbox.Add(self.txt_note, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 6)
mfg
Gerold
:-)

PS: Ich fasse mal zusammen: http://paste.pocoo.org/show/22824/

Verfasst: Montag 21. Januar 2008, 22:32
von SonGuko
Bild
vielen dank für die schnelle hilfe

Verfasst: Dienstag 22. Januar 2008, 20:48
von SonGuko
hat alles wunderbar geklappt :)
wäre super nett von euch, wenn ihr mir sagen könntet, wie ich es verhindern kann, dass der countdown von vorn anfängt wenn man nach einem stop den countdown wieder startet. (am besten der aktuelle countdownstand geht in das textfeld bei der eingabe - ich hoffe ihr ihr versteht es)
dann bräuchte ich noch einen extra knopf, der alle countdowns anhält und auch wieder startet. ( am oben rechts in der ecke)

wenn ihr das hinkriegen würdet, dann würd ich eure füße küssen (methaphorisch :D)

Verfasst: Mittwoch 23. Januar 2008, 09:09
von skypa
Oder aber du setzt dich mal hin und versuchst mal den Code zu verstehen, dann kannste das eigentlich auch selbst machen, vlt nicht ohne Hilfe aber immerhin eigenständig.Das der Countdown nicht wieder von vorne anfängt kannste mit nem Counter und ner if- Abfrage denk ich mal hinkriegen.

MfG skypa

Verfasst: Donnerstag 24. Januar 2008, 19:47
von SonGuko
blöd nur, dass der schreiber des codes seine methoden nicht spezifiziert hat.
ich hab mir ja mal die beiden methoden zu brust genommen:

Code: Alles auswählen

    def on_timer(self, event):
        
        now = datetime.datetime.now()
        if now < self.end_datetime:
            diff = self.end_datetime - now
            new_value = "%6i Minuten %6i sec." % (diff.seconds // 60, diff.seconds % 60)
        else:
            new_value = "%6i Minuten %02i" % (0, 0)
            self.timer.Stop()
            self.musik_abspielen()
            self.txt_startvalue.Enable()
            self.btn_start_stop.SetLabel("Start")
        
        self.anzeige.SetLabel(new_value)
        wx.YieldIfNeeded()
    
    
    def start_stop_countdown(self, event):
        if self.btn_start_stop.GetLabel() == "Start":
            diff_seconds = int(self.txt_startvalue.GetValue()) * 60
            now = datetime.datetime.now()
            self.end_datetime = now + datetime.timedelta(seconds = diff_seconds)
            self.timer.Start(100)
            self.txt_startvalue.Disable()
            self.btn_start_stop.SetLabel("Stop")
        
        else:
            self.timer.Stop()
            self.txt_startvalue.Enable()
            self.btn_start_stop.SetLabel("Start")
aber irgendwie werd ich nicht schlau draus :(
ich wollts so machen:
wenn stop gedrückt -> hält countdown an und ändert das textfeld in "keine veränderung" um. wenn mann wieder auf start drückt und "keine veränderung" im textfeld steht, dann soll er einfach weiter machen. wenn aber eine zahl drin steht, dann soll er einen neuen countdown starten.

aber leichter gesagt als getan. wenn ich an der new_value oder an diff_secounds rumfusche, zaubert er mir ein neues textfeld -.-

Verfasst: Samstag 26. Januar 2008, 00:24
von SonGuko
ok ich habs jetzt endlich nach stundenlangen rumprobierens xD
es war nicht so leicht wie ichs mir gedacht habe, aber jetzt funzt es. zwar nicht besonders schön aber immerhin klappts.

vielen dank dass ihr mir nicht weiter geholfen habt, denn jetzt habe ich das programm verstanden und was dazugelernt :)

Verfasst: Samstag 26. Januar 2008, 17:57
von SonGuko
hallo,
also folgendes problem:
ich brauche eine möglichkeit alle countdowns gleichzeitig anzuhalten, sprich die methode start_stop_countdown für alle countdowns zu aktivieren.

ich bin mit meinem latein am ende. :K
hier mal der neue code:


EDIT by Gerold: Code ausgelagert

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




wäre voll nett wenn ihr mir helfen könntet :)

Verfasst: Montag 28. Januar 2008, 12:07
von gerold
Hallo SonGuko!

Das hat nichts mehr mit einer schnell beantwortbaren Frage zu tun.

Zwischenstand: http://paste.pocoo.org/show/24170/

Ich werde mich noch ein paar Minuten daran austoben und den überarbeiteten Code hier posten.

EDIT:

Mit "Allgemeinem Countdown-Stopp":
http://paste.pocoo.org/show/24175/


mfg
Gerold
:-)

Verfasst: Mittwoch 30. Januar 2008, 15:50
von SonGuko
vielen dank für die hilfe,
allein wäre ich da nicht so schnell drauf gekommen.
und schön dass du die sachen die du hinzugefügt hast, kommentiert hast :)