使用Show()时不显示文本,但使用ShowModal()时显示。 (wxPython的)

时间:2014-06-13 21:42:57

标签: python-2.7 dialog wxpython wxwidgets

我正在分析图像,处理需要一些时间。我希望当用户点击“分析”时弹出一个对话框。按钮。我需要它是无模式的,所以它不会中断我的应用程序的流程(因此分析实际发生​​)。我只是想让它显示"分析图像......"直到分析完成,此时它消失了(意思是我不想要任何按钮)。以下是我到目前为止的情况:

class MessageDialog(wx.Dialog):
    def __init__(self, message, title):
    wx.Dialog.__init__(self, None, -1, title,size=(300, 120))
    self.CenterOnScreen(wx.BOTH)

    text = wx.StaticText(self, -1, message)

    box = wx.BoxSizer(wx.VERTICAL)
    box.Add(text, 1, wx.ALIGN_CENTER, 10)
    self.SetSizer(box)

我使用以下命令从我的主应用程序框架中调用它:

msg_dialog = MessageDialog("Analyzing image...", "Analyzing")
msg_dialog.Show()
# Do some stuff.....
msg_dialog.Destroy()

当我使用msg_dialog.Show()时,"分析图像......"文字没有显示出来。如果我将其更改为msg_dialog.ShowModal(),则会显示文本。我不能使用ShowModal(),因为它会暂停我的程序,从而破坏了盒子的用途。关于发生了什么的任何想法?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您需要调用wxWindow::Update()强制更新屏幕上的控件而不返回事件循环。

您也可以使用wxBusyInfo