Countdown, aber anders...

Du hast eine Idee für ein Projekt?
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Donnerstag 17. Januar 2008, 10:08

Hey,
ich möchte ein Countdown Timer programmieren, aber nicht sowas wie es schon zu finden gibt sondern mit "genauer" Anzeige.
Ich möcht also sehen wie die Zahlen runter purzeln, hat da jemand eine Idee, ich trampel da ziemlich im dunkeln.

Best regards!
Benutzeravatar
phxx
User
Beiträge: 31
Registriert: Freitag 5. Mai 2006, 19:47

Donnerstag 17. Januar 2008, 11:17

Was meinst du denn mit genauer Anzeige? Etwa auf millisekunden genau?

Erkläre das mal bitte etwas genauer =)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 17. Januar 2008, 11:38

skypa hat geschrieben:Ich möcht also sehen wie die Zahlen runter purzeln
Hallo skypa!

Kein Countdown, aber ein Uhrenbeispiel:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx
import time

wx.SetDefaultPyEncoding("iso-8859-15")


class MyFrame(wx.Frame):
    
    def __init__(self, parent = None, title = "Time"):
        wx.Frame.__init__(self, parent, -1, title)
        
        panel = wx.Panel(self)
        
        vbox_main = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(vbox_main)
        
        self.anzeige = wx.StaticText(panel, size = (150, -1))
        vbox_main.Add(self.anzeige, 1, wx.EXPAND | wx.ALL, 10)
        
        self.timer = wx.Timer()
        self.timer.Bind(wx.EVT_TIMER, self.on_timer)
        self.timer.Start(100)
        
        panel.Fit()
        self.Fit()
        self.SetSizeHintsSz(self.GetSize())
    
    
    def on_timer(self, event):
        self.anzeige.SetLabel(time.strftime("%H:%M:%S"))
        self.anzeige.Refresh()


def main():
    """Testing"""
    app = wx.PySimpleApp()
    f = MyFrame()
    f.Center()
    f.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()
Das musst du dir nur noch in einen Countdown umbasteln.

mfg
Gerold
:-)

EDIT:

Code: Alles auswählen

        self.anzeige.SetLabel(time.strftime("%H:%m:%S"))
durch

Code: Alles auswählen

        self.anzeige.SetLabel(time.strftime("%H:%M:%S"))
getauscht.
Zuletzt geändert von gerold am Freitag 18. Januar 2008, 14:01, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Freitag 18. Januar 2008, 13:56

Danke gerold, ich schraub schon seit gestern dran rum, aber etwas macht mich stutzig.

Wenn ich dein Beispiel starte ist die uhrzeit eine vollkommen andere.
So ungefähr 50 Minuten geht das Programm nach, sowohl unter Vista, als auch Windows 2000, unter Linux (Ubuntu) hab ichs noch nicht getestet.

Bezüglich des Countdown Timers, ich will es so machen das man entweder die Dauer oder aber eine Uhrzeit angeben kann. Ich bastel bislang an der GUI damit es auch was her macht.

Die Berechnung ist soweit klar, aber hab ichs immer noch so ganz gecheckt wie das funktionieren soll.

Ich geh davon aus, das ich jede sekunde ETA = (n - 1) in einer Schleife laufen lassen muss, aber das is nur die Spitze des Eisbergs ~.~

Ist es eigentlich auch möglich Millisekunden sich anzeigen zu lassen oder brauch man dafür Threads !? :oops:

Kann man es eigentlich auch unterdrücken das man nicht dauernd die Konsole sieht wenn man ein python programm startet?!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 18. Januar 2008, 14:04

Hallo skypa!
skypa hat geschrieben:Wenn ich dein Beispiel starte ist die uhrzeit eine vollkommen andere. So ungefähr 50 Minuten
Ich habe mich vertan. In Zeile 33 sollte ein großes "M" statt dem kleinen "m" als Ausgabeformat verwendet werden. :roll:

skypa hat geschrieben:Die Berechnung ist soweit klar, aber hab ichs immer noch so ganz gecheckt wie das funktionieren soll.
Ich versuche mal ein kleines Beispiel zusammenzuhacken.

skypa hat geschrieben:Kann man es eigentlich auch unterdrücken das man nicht dauernd die Konsole sieht wenn man ein python programm startet?!
Natürlich. Starte dein Programm statt mit "Python.exe" mit "Pythonw.exe".

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Freitag 18. Januar 2008, 14:49

Abgefahren, ich fragte mich immer wofür die pythonw.exe wohl sein soll... nu weiß ich bescheid :wink:
Sieht gleich viel angenehmer aus, wenn sich nur das öffnet was man auch haben will.

Das mit dem großem M ist mir gestern abend gar nicht mehr aufgefallen, lag wohl am Rotwein.
In meinem Buch stands aber auch nicht drin, welches ich verzweifelt am wälzen war.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 18. Januar 2008, 15:14

Hallo!

wxPython-Beispiel für eine Stoppuhr, eine Uhr und einen Countdown:
http://paste.pocoo.org/show/22108/

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Freitag 18. Januar 2008, 15:46

Ker, Respekt Gerold :D

Granatenstark, die Millisekunden flitzen zwar nicht so schnell wie man´s
eigentlich kennt von einer digitalen Stoppuhr, aber egal.

Bis ich darauf gekommen wäre.. pfff... wochen später bestimmt :roll:

Ich poste später mal meine Variante :twisted:
Wie machst du das eigentlich immer? Irgendwie schau ich nicht in den Referenzen wie andere :?

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

Freitag 18. Januar 2008, 16:00

skypa hat geschrieben:Wie machst du das eigentlich immer?
Hallo skypa!

Ich verwende WingIDE. Das hat eine richtig gute Codevervollständigung. Deshalb muss ich nicht jedes Attribut eines Objektes auswendig kennen. Und die Docstrings der Attribute werden ebenfalls automatisch angezeigt. Und ich lese alles was ich über Python oder wxPython finden kann. ;-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Freitag 18. Januar 2008, 16:08

Danke für den Tipp, werd ich mir auch mal zulegen.
Zu meiner Schande mach ich das *noch* immer mitn Editor :D
Bzw mit Vim unter Linux... man kann sich eben auch selbst das Bein stellen.

Ich bin im Besitz von 6 Ebooks einschließlich "wxPython in Action", allesamt in Englisch, das übt zum einen, aber das was man dann daraus essentiell entnehmen kann ist oft nicht das was ich grad bräuchte.

Aber zum Glück gibts ja dies herrliche Forum mit Gleichgesinnten :wink:

Mfg skypa
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 18. Januar 2008, 18:00

skypa hat geschrieben:Zu meiner Schande mach ich das *noch* immer mitn Editor :D
Bzw mit Vim unter Linux... man kann sich eben auch selbst das Bein stellen.
Wie meinen? Die produktivsten Programmierer, die ich kenne nutzen Vim oder Emacs. Ich glaube die würden sich wundern wenn du ihnen sagen würdest dass sie sich das Bein stellen.

Naja, wenn ich vom Vim wechseln sollte, dann höchstens zu Emacs :D
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Freitag 18. Januar 2008, 18:44

Der Trick ist einfach beim mit $EDITOR sich selber ein Bein stellen, in die richtige Richtung zu stolpern. Wenn man immer in die richtige Richtung fällt, ist man schneller am Ziel, als Leute, die mit einer IDE gemütlich in diese Richtung gehen. ;-)
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Freitag 18. Januar 2008, 20:20

Interessantes Thema, ich bin auch der Meinung das es vorallem mehr in Fleisch und Blut übergeht wenn man Vim oder gar Emacs nutzt, Emacs is für mein Geschmack das heftigste... Spiel grad in WingIDE rum, die Mischung aus beiden is glaub ich genau das richtige für mich.

Mein Kollege ist wahrlich ein Crack in Sachen C++ und PHP, er gehört auch zu denen die auf Emacs bzw Vim schwören :)


MfG skypa
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Dienstag 22. Januar 2008, 15:58

Ic brauch eure, ich komm nicht drauf.
Na etlichen lesens überb das ganze BoxSizers Zeugs hab ich mich entschlossen es dabei zu belassen.
Die Ausrichtung lässt noch zu wünschen übrig, aber erstmal die Funktion ist wichtig:

Code ausgelagert: http://paste.pocoo.org/show/22984/

Wenn der Wert übergeben wird streikt es.
Jemand ne Idee?

Später soll noch eine Anbindung rein, welche Winamp startet falls das noch nicht geschehen ist, quasi als Wecker mit anständiger Mucke :D

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

Dienstag 22. Januar 2008, 16:23

Hallo skypa!

Es scheitert ja schon an Zeile 76: ``diff_sec = int()``. Das macht keinen Sinn.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten