Nach Countdown Kommando ausführen
Verfasst: Samstag 10. April 2010, 11:28
Hallo zusammen,
ich möchte ein Programm schreiben, das mir meinen Rechner automatisch herunterfährt. Ich möchte den Modus, die Zeit usw einstellen können und daraus dann den Befehl 'shutdown -s -f -t 0 -m \\computername ausführen.
Das klappt alles, ich habe das jetzt in eine Tkinter GUI gepackt, alles kein Problem.
Was ich allerdings nicht hinbekomme, ist den Befehl erst nach einer bestimmten Zeit auszuführen, so wie bei einem countdown.
Ich habe mich schon durch diverse Artikel gequält, wobei die meisten sagen dass die einfachste Variante einen Befehl zu Verzögern time.sleep() ist.
Das bekomme ich nicht hin, da passieren komische Sachen:
Wenn ich zum testen des ganzen sowas extrem einfaches mache, wie
dan hört er schon bei der 3 an zu warten... liegt das daran dass ich 2 prozessoren laufen habe?
naja ist ja auch egal
was ich eigentlich möchte ist, dass ein label erstellt wird in dem die zeit runtergezählt wird.
das habe ich ungefähr so gemacht
Wenn ich das jetzt ausführe, dann dauert das x sekunden und dann wird das label erstellt wo nurnoch 1 drinsteht.
überall wo ich mal nachgeschaut habe, wurden in countdownscripts mit sleep gearbeitet...
immerwieder habe ich auch gelsesen, dass sleep halt alles blockiert (was ja eigentlich egal sein sollte, weil ich ja mit ner schleife arbeite) und dass man deshalb lieber tk.after(ms,func) benutzen soll, habe ich auch versucht
führt aber zum selben problem, der befehl wird nach der angegebenen zeit ausgeführt, aber das mit der gui klappt nicht
habt ihr vllt eine idee wie ich das verbessern kann?
ich bin noch schüler und noch nicht lange bei python, kenn mich also nicht soo gut aus...
lg
johannes
ich möchte ein Programm schreiben, das mir meinen Rechner automatisch herunterfährt. Ich möchte den Modus, die Zeit usw einstellen können und daraus dann den Befehl 'shutdown -s -f -t 0 -m \\computername ausführen.
Das klappt alles, ich habe das jetzt in eine Tkinter GUI gepackt, alles kein Problem.
Was ich allerdings nicht hinbekomme, ist den Befehl erst nach einer bestimmten Zeit auszuführen, so wie bei einem countdown.
Ich habe mich schon durch diverse Artikel gequält, wobei die meisten sagen dass die einfachste Variante einen Befehl zu Verzögern time.sleep() ist.
Das bekomme ich nicht hin, da passieren komische Sachen:
Wenn ich zum testen des ganzen sowas extrem einfaches mache, wie
Code: Alles auswählen
for i in range(5):
print i
sleep(1)
for i in range(5,10):
print i
naja ist ja auch egal
was ich eigentlich möchte ist, dass ein label erstellt wird in dem die zeit runtergezählt wird.
das habe ich ungefähr so gemacht
Code: Alles auswählen
for i in range(int(self.zeit.get()),0,-1): # self.zeit ist die zeit die abgewartet werden soll
self.timer.set(i) # self.timer ist das label in dem die zeit angezeigt werden soll
sleep(1)
überall wo ich mal nachgeschaut habe, wurden in countdownscripts mit sleep gearbeitet...
immerwieder habe ich auch gelsesen, dass sleep halt alles blockiert (was ja eigentlich egal sein sollte, weil ich ja mit ner schleife arbeite) und dass man deshalb lieber tk.after(ms,func) benutzen soll, habe ich auch versucht
Code: Alles auswählen
for i in range(int(self.zeit.get()),0,-1):
self.master.after(self.zeit.get()*1000,self.timer.set(i))
habt ihr vllt eine idee wie ich das verbessern kann?
ich bin noch schüler und noch nicht lange bei python, kenn mich also nicht soo gut aus...
lg
johannes