wx.ProgressDialog und EndModal
Verfasst: Donnerstag 1. April 2010, 11:03
Hallo,
ich eine Klasse aus wx.ProgressDialog erstellt, die ich Modal aufrufen möchte.
im Hauptprogramm steht dann
Wenn man auf Abbrechen klickt soll der Dialog wx.ID_CANCEL zurückgeben. Das klappt unter Linux und Windows XP Home in einer VM, aber nicht unter Windows XP Prof und Windows 7 (nicht virtuell). Dort ist dann der Timer gestoppt, aber der Dialog verschwindet nicht.
Sehr merkwürdig. Was mach ich falsch?
ich eine Klasse aus wx.ProgressDialog erstellt, die ich Modal aufrufen möchte.
Code: Alles auswählen
class MyProgress(wx.ProgressDialog):
def __init__(self, parent, name, pd_msg, moreargs):
wx.ProgressDialog.__init__(self, name,
pd_msg,
maximum=1,
parent=parent,
style=wx.PD_CAN_ABORT | wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME | wx.PD_AUTO_HIDE
#| wx.PD_ESTIMATED_TIME
#| wx.PD_REMAINING_TIME
)
#Hier noch mehr Aktion
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.OnPulse)
self.timer.Start(150, False)
def OnPulse(self, event):
keepgoing, skip = self.Pulse()
if keepgoing:
#Pseudo keepgoing Block
if self.testNeeded():
msg = self.getStatusMsg()
if msg != self.curmsg:
self.Update(0, msg)
self.curmsg = msg
else:
self.timer.Stop()
self.Update(1, "fertig")
#Hier noch mehr Aktion
self.EndModal(wx.ID_OK)
else:
##
#Abbrechen
##
self.timer.Stop()
#Hier noch mehr Aktion
self.EndModal(wx.ID_CANCEL)
Code: Alles auswählen
dlg=MyProgress(self,u"Titel", u"Nachricht",someargs)
if dlg.ShowModal() != wx.ID_OK:
dlg.Destroy()
return
#wenn alles geklappt hat geht es weiter
Sehr merkwürdig. Was mach ich falsch?