Problem mit "Countdown-Programm" (Thread)
Verfasst: Sonntag 18. Februar 2007, 20:21
Hallo erstmal.
Ich habe eine Frage zu meinem Programm, dessen Quelltext ihr unten sehen könnt:
Vorab: Recht zügig bin ich als Python-Neuling am jetzigen Punkt angekommen. Ein Lob auf die umfassenden Dokumentationen im Internet...
Das Programm soll eine vom User bestimmte Zahl runterzählen. Das tut es soweit auch. Aber nach Modifikation und Einfügen einer Schleife, zählt das Programm "wert" nicht mehr runter. Das Ausgabe-Fenster bleibt auf 12 stehen.
Eine Fehlermeldung wird nicht ausgeben, aber wo ist der Konflikt?
Ich habe eine Frage zu meinem Programm, dessen Quelltext ihr unten sehen könnt:
Vorab: Recht zügig bin ich als Python-Neuling am jetzigen Punkt angekommen. Ein Lob auf die umfassenden Dokumentationen im Internet...
Das Programm soll eine vom User bestimmte Zahl runterzählen. Das tut es soweit auch. Aber nach Modifikation und Einfügen einer Schleife, zählt das Programm "wert" nicht mehr runter. Das Ausgabe-Fenster bleibt auf 12 stehen.
Code: Alles auswählen
import wx
import time
import winsound
from thread import start_new_thread
class Counter(wx.Panel):
def __init__(self, parent, id):
wx.Panel.__init__(self,parent,id,)
self.eingabe = wx.TextCtrl(self,10,"",wx.Point(70,20))
self.ausgabe = wx.TextCtrl(self,20,"00",wx.Point(70,50))
self.button1 = wx.Button(self,30,"Starten",wx.Point(80,80),wx.Size(80,25))
self.Bind(wx.EVT_BUTTON,self.OnStart,self.button1)
def OnStart(self,event):
wert = self.eingabe.GetValue()
self.ausgabe.SetValue(wert)
start_new_thread(self.thread,())
def thread(self):
wert = self.eingabe.GetValue()
while (wert > 0):
self.ausgabe.SetValue(str(wert))
wert = int(wert) - 1
time.sleep(1)
#==========================================================================
# Sobald die folgenden Anweisungen die Anweisungen
# aus den Zeilen 22-24 ersetzen sollen, funktioniert das
# Programm nicht mehr
#
# if wert < 10:
# self.ausgabe.SetValue("0" + str(wert))
# #print(str(wert))
# wert = int(wert) - 1
# time.sleep(1)
# if wert == 0:
# self.ausgabe.SetValue("00")
#
#==========================================================================
app = wx.PySimpleApp()
frame = wx.Frame(None,-1,"Counter",size=(250,180))
Counter(frame,-1)
frame.Show(1)
app.MainLoop()