سؤال

أريد إنشاء حوار مشروط ولكن الذي لا ينبغي أن تتصرف في مشروط أي طريقةالتحكم في التدفق يجب أن تستمر

إذا كنت تفعل

 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()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top