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!
Countdown, aber anders...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo skypa!skypa hat geschrieben:Ich möcht also sehen wie die Zahlen runter purzeln
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()
mfg
Gerold

EDIT:
Code: Alles auswählen
self.anzeige.SetLabel(time.strftime("%H:%m:%S"))
Code: Alles auswählen
self.anzeige.SetLabel(time.strftime("%H:%M:%S"))
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.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
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 !?
Kann man es eigentlich auch unterdrücken das man nicht dauernd die Konsole sieht wenn man ein python programm startet?!
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 !?

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

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

Ich versuche mal ein kleines Beispiel zusammenzuhacken.skypa hat geschrieben:Die Berechnung ist soweit klar, aber hab ichs immer noch so ganz gecheckt wie das funktionieren soll.
Natürlich. Starte dein Programm statt mit "Python.exe" mit "Pythonw.exe".skypa hat geschrieben:Kann man es eigentlich auch unterdrücken das man nicht dauernd die Konsole sieht wenn man ein python programm startet?!
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Abgefahren, ich fragte mich immer wofür die pythonw.exe wohl sein soll... nu weiß ich bescheid
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.

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.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
wxPython-Beispiel für eine Stoppuhr, eine Uhr und einen Countdown:
http://paste.pocoo.org/show/22108/
mfg
Gerold

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.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ker, Respekt Gerold
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
Ich poste später mal meine Variante
Wie machst du das eigentlich immer? Irgendwie schau ich nicht in den Referenzen wie andere
MfG skypa

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

Ich poste später mal meine Variante

Wie machst du das eigentlich immer? Irgendwie schau ich nicht in den Referenzen wie andere

MfG skypa
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo skypa!skypa hat geschrieben:Wie machst du das eigentlich immer?
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.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Danke für den Tipp, werd ich mir auch mal zulegen.
Zu meiner Schande mach ich das *noch* immer mitn Editor
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
Mfg skypa
Zu meiner Schande mach ich das *noch* immer mitn Editor

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

Mfg skypa
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.skypa hat geschrieben:Zu meiner Schande mach ich das *noch* immer mitn Editor![]()
Bzw mit Vim unter Linux... man kann sich eben auch selbst das Bein stellen.
Naja, wenn ich vom Vim wechseln sollte, dann höchstens zu Emacs

My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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. 

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
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
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
Edit by Gerold: Code ausgelagert
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

Edit by Gerold: Code ausgelagert
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo skypa!
Es scheitert ja schon an Zeile 76: ``diff_sec = int()``. Das macht keinen Sinn.
mfg
Gerold

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.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Definiere 'nörgelt'.skypa hat geschrieben:Nur versteh ich eben halt nicht, warum er nörgelt wenn ich erst GetValue() mache und danach split(':')...

My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Mit nörgelt mein ich, dass es zu einer Fehlermeldung kommt.
http://paste.pocoo.org/show/22992/
Die Umrechnung funktioniert nicht so wie Sie soll...
Hab mein Fehler erkannt den ich zuvor hatte mit dem array,
die Fehlermeldung lautet nun:
type for timedelta seconds component: unicode
http://paste.pocoo.org/show/22992/
Die Umrechnung funktioniert nicht so wie Sie soll...
Hab mein Fehler erkannt den ich zuvor hatte mit dem array,
die Fehlermeldung lautet nun:
type for timedelta seconds component: unicode
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo skypa!skypa hat geschrieben:type for timedelta seconds component: unicode
Jetzt hast du hier schon über 60 Beiträge in diesem Board geschrieben. Und trotzdem zeigst du uns immer noch nicht die volle Fehlermeldung.

Ich rate dir **dringend** einen Debugger einzusetzen. Ich laden den Code in mein WingIDE. Dann führe ich das Programm aus. Sobald ein Fehler passiert, bleibt WingIDE genau in der Zeile stehen, in der der Fehler passiert ist. Dann sehe ich die Fehlermeldung: "TypeError: unsupported type for timedelta seconds component: unicode"
Sofort sieht man, dass hier versucht wird, ein ``datetime.timedelat``-Objekt zu erstellen. Ein solches Objekt kann nicht mit einem Unicode-Objekt erstellt werden. Es braucht für den Parameter ``seconds`` ein Integer-Objekt. Also gebe ich im Debug-Test-Fenster "diff_seconds" ein um zu überprüfen, was da in der Zeile 88 denn so als Parameter übergeben wird.
Das Ergebnis sieht so aus:
Code: Alles auswählen
>>> diff_seconds
u'180000'
>>>
In Zeile 85 wird mit ``diff_seconds = hours+minutes+secondes`` ein Unicode-String zusammengesetzt. Das kann natürlich nicht funktionieren...
Das war eine kleine Anleitung zum Debuggen von Programmen.

mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ohne jetzt näher in den Code geschaut zu haben: `timedelta` arbeitet mit Zahlen, hat lauf Fehlermeldung aber anscheinend etwas vom Typ `unicode` bekommen. Das sollte eigentlich recht deutlich sein.