【问题标题】:Text does not display when Show() is used, but does when ShowModal() is used. (wxPython)使用 Show() 时不显示文本,但使用 ShowModal() 时会显示。 (wxPython)
【发布时间】:2014-08-04 12:52:26
【问题描述】:

我正在分析一张图片,需要一点时间来处理。当用户单击“分析”按钮时,我希望弹出一个对话框。我需要它是无模式的,这样它就不会中断我的应用程序的流程(因此实际上会发生分析)。我只希望它显示“正在分析图像...”,直到分析完成,此时它消失(这意味着我不需要任何按钮)。这是我目前所拥有的:

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() 但是因为它暂停了我的程序,破坏了盒子的目的。关于发生了什么的任何想法?感谢您的帮助。

【问题讨论】:

    标签: python-2.7 dialog wxpython wxwidgets


    【解决方案1】:

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

    您也可以只使用wxBusyInfo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 2018-05-04
      • 1970-01-01
      • 2019-03-29
      • 2012-03-06
      • 1970-01-01
      相关资源
      最近更新 更多