Ich kann nicht einen wx.ProgressDialog zu schließen. Wenn es abläuft; alles ist gut. Durch Klicken auf "Abbrechen" oder "Überspringen" wird der Dialog verlassen, aber das Fenster bleibt für immer auf dem Bildschirm eingefroren (Kontrollfluss kehrt zurück).wxpython: zerstören abgebrochen ProgressDialog
import wx
def Progress(parent=None, message="", title="", maximum=3000):
dlg = wx.GenericProgressDialog(title, message, maximum,style=wx.PD_AUTO_HIDE|wx.PD_APP_MODAL|wx.PD_CAN_SKIP|wx.PD_CAN_ABORT)
keepGoing = True
skip = False
count = 0
while keepGoing and (not skip) and count < maximum:
count += 1
wx.MilliSleep(1)
wx.Yield()
(keepGoing, skip_bogus) = dlg.Update(count)
skip = dlg.WasSkipped() #NOTE: skip_bogus doesn't ever seem to update; even when skip button is clicked
dlg.Destroy()
wx.Yield()
if not keepGoing:
return "cancel"
elif skip:
return "skip"
else:
return None
app = wx.App()
app.MainLoop()
Progress(None, "message", "title")
wxpython v3.0.2 Python v2.7.10
Das löst das Problem nicht. NACH dem Beenden der Schleife wird der Dialog nicht zerstört. CPU-Auslastung während der Schleife ist irrelevant. – whitey04
Zugegeben, Ihr Beispiel funktioniert bei mir mit der exakt gleichen ** Konfiguration wie Ihre (Python dinge 32 bit, Win7 64 bit) ohne die geringste Änderung. Selbst Änderungen wie von @RobinDunn vorgeschlagen sind nicht notwendig. – nepix32