wxProgressDialog مثل السلوك عن wxDialog
-
06-07-2019 - |
سؤال
أريد إنشاء حوار مشروط ولكن الذي لا ينبغي أن تتصرف في مشروط أي طريقةالتحكم في التدفق يجب أن تستمر
إذا كنت تفعل
dlg = wx.Dialog(parent)
dlg.ShowModal()
print "xxx"
dlg.Destroy()
"xxx" لن تحصل المطبوعة ، ولكن في حالة التقدم الحوار
dlg = wx.ProgressDialog.__init__(self,title, title, parent=parent, style=wx.PD_APP_MODAL)
print "xxx"
dlg.Destroy()
"xxx" سوف تحصل على طباعة
وذلك أساسا أريد أن تحقيق wx.PD__التطبيقات__مشروط عادي الحوار ؟
المحلول 2
كانت تافهة جدا, فقط باستخدام wx.PD_APP_MODAL أسلوب في wx.الحوار يسمح أن يكون مشروط دون توقف تدفق البرنامج, فقط إدخال المستخدم إلى التطبيق المحظورة ، ظننت PD_APP_MODAL هو فقط من أجل التقدم الحوار
نصائح أخرى
مجرد استخدام Show
بدلا من ShowModal
.
إذا كانت الدالة ( print "xxx"
جزء) يمتد لفترة طويلة سيكون لديك إما يدويا الاتصال wx.SafeYield
كل ذلك في كثير من الأحيان أو نقل عملك إلى موضوع مستقل وإرسال أحداث مخصصة إلى الحوار من ذلك.
أكثر واحد نصيحة.كما فهمت أنت تريد تنفيذ بعض التعليمات البرمجية بعد حوار مشروط هو مبين هنا هو خدعة صغيرة خاصة ربط EVT_INIT_DIALOG
أن يحقق فقط.
import wx
class TestFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
btn = wx.Button(self, label="Show Dialog")
btn.Bind(wx.EVT_BUTTON, self.ShowDialog)
def ShowDialog(self, event):
dlg = wx.Dialog(self)
dlg.Bind(wx.EVT_INIT_DIALOG, lambda e: wx.CallAfter(self.OnModal, e))
dlg.ShowModal()
dlg.Destroy()
def OnModal(self, event):
wx.MessageBox("Executed after ShowModal")
app = wx.PySimpleApp()
app.TopWindow = TestFrame()
app.TopWindow.Show()
app.MainLoop()