Problem mit falsch angezeigtem Dialog
Verfasst: Donnerstag 27. April 2006, 04:31
Hallo liebe Gemeinde,
ich habe noch ein Problem gefunden, zu dem ich im Netz der Netze keine Lösung gefunden habe.
Ich habe ein Programm, welches einige Zeit damit verbringt, Daten zu laden, zu bearbeiten und zu speichern. Damit der Benutzer nicht denkt, es würde nichts mehr passieren, wollte ich einen kleinen Dialog zeigen, welcher Rückmeldung über die momentane Tätigkeit gibt.
Dafür habe ich mit eine kleine Klasse PleaseWaitDialog gebastelt. Nun wird dieser Dialog aber nicht richtig angezeigt, bzw. das Label darauf gar nicht.
Um mal zu zeigen was ich meine, hier ein kleines Code-Sample:
Mit auskommentierter Schleife zeigt sich der Dialog so, wie er sein sollte. Mit Schleife zeigt sich der Fehler. Anscheinend Hat der Dialog hier nicht "genug" Zeit, sich richtig zu präsentieren. Da aber das Programm weiterlaufen muss, ist das ein Problem.
Hat hier jemand eine Lösung?
Gruß
Till
ich habe noch ein Problem gefunden, zu dem ich im Netz der Netze keine Lösung gefunden habe.
Ich habe ein Programm, welches einige Zeit damit verbringt, Daten zu laden, zu bearbeiten und zu speichern. Damit der Benutzer nicht denkt, es würde nichts mehr passieren, wollte ich einen kleinen Dialog zeigen, welcher Rückmeldung über die momentane Tätigkeit gibt.
Dafür habe ich mit eine kleine Klasse PleaseWaitDialog gebastelt. Nun wird dieser Dialog aber nicht richtig angezeigt, bzw. das Label darauf gar nicht.
Um mal zu zeigen was ich meine, hier ein kleines Code-Sample:
Code: Alles auswählen
import wx
class PleaseWaitDialog(wx.Dialog):
def __init__(self, parent, ID, title, modus):
wx.Dialog.__init__(self, None, ID, title, style = wx.THICK_FRAME)
self.sizer = wx.BoxSizer(wx.VERTICAL)
if modus == "save":
self.label = wx.StaticText(self, -1, "Saving the evaluation data!\n"
"Please wait.", style = wx.ALIGN_CENTRE)
if modus == "analysis":
self.label = wx.StaticText(self, -1, "Running analysis!\n"
"Please wait.", style = wx.ALIGN_CENTRE)
self.sizer.Add(self.label, 0, wx.ALIGN_CENTRE|wx.ALL, 10)
self.SetSizer(self.sizer)
self.sizer.Fit(self)
class MyApp(wx.App):
def OnInit(self):
dialog = PleaseWaitDialog(self, -1, "Running analysis", "analysis")
dialog.Show()
##for i in range(0, 100000):
## print i,
##dialog.Destroy()
return True
def main():
app = MyApp(0)
app.MainLoop()
if __name__ == "__main__":
main()
Hat hier jemand eine Lösung?
Gruß
Till