countdown **brauche hilfe bitte ganz unten gucken**

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
SonGuko
User
Beiträge: 11
Registriert: Montag 21. Januar 2008, 19:31

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/
Zuletzt geändert von SonGuko am Samstag 26. Januar 2008, 17:53, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
SonGuko
User
Beiträge: 11
Registriert: Montag 21. Januar 2008, 19:31

ok vielen dank erstmal :D
ok für den zweiten wunsch mach ich mal nen bildchen :)


Bild
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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/
Zuletzt geändert von gerold am Montag 21. Januar 2008, 22:43, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
SonGuko
User
Beiträge: 11
Registriert: Montag 21. Januar 2008, 19:31

Bild
vielen dank für die schnelle hilfe
Zuletzt geändert von SonGuko am Mittwoch 23. Januar 2008, 19:35, insgesamt 2-mal geändert.
SonGuko
User
Beiträge: 11
Registriert: Montag 21. Januar 2008, 19:31

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)
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

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
SonGuko
User
Beiträge: 11
Registriert: Montag 21. Januar 2008, 19:31

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 -.-
SonGuko
User
Beiträge: 11
Registriert: Montag 21. Januar 2008, 19:31

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 :)
SonGuko
User
Beiträge: 11
Registriert: Montag 21. Januar 2008, 19:31

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 :)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
SonGuko
User
Beiträge: 11
Registriert: Montag 21. Januar 2008, 19:31

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 :)
Antworten