2016-06-22 134 views
0

我正在为我工​​作的公司开发一些软件。我使用wx作为GUI。我基本上有这样的: 当程序忙或加载时,我创建一个wx.BusyInfo对象。但是,有时候,这个繁忙的信息框仍然可见,而且我需要向用户打印一条错误消息,但是MessageDialog实际上是在BusyInfo框下面弹出的。为什么? 有没有办法让错误显示在BusyInfo的顶部?我尝试了wx.STAY_ON_TOP选项,但它不起作用。wx在BusyInfo框后面弹出Python MessageDialog?

我需要它这样工作,因为我的类正在变得复杂,我不想删除BusyInfo,显示错误,然后重新创建BusyInfo;我的代码会更容易,只是在BusyInfo框的顶部显示MessageDialog错误。

谢谢。

这里是什么,我试图做一些示例代码:

# myWindow is the main Window or Frame 
wx.BusyInfo("Loading, please wait ...", myWindow) 
wx.MessageDialog(myWindow, "Error message", "Error!", style = wx.OK | wx.ICON_EXCLAMATION | wx.STAY_ON_TOP) 

回答

0

经过大量的谷歌搜索和研究,我发现了如何解决这个问题!首先,而不是使用wx.BusyInfo我使用PyBusyInfo(我在这里找到代码:https://searchcode.com/codesearch/view/63249201/)。这是因为,wx.BusyInfo实际上并不是从wx.Window类继承的,但PyBusyInfo是;我们需要繁忙的框架,因为我们将它传递给wx.MessageDialog。然后,我只需将self._infoFrame作为父进程传入wx.MessageDialog。而已。

首先,我加入这个方法来PyBusyInfo类:

def getFrame(self): 
    return self._infoFrame 

然后,我做这个代码,使其与上述错误消息繁忙信息框正常工作:

myBusy = PyBusyInfo("Loading, please wait ...", myParentWindow) 
wx.MessageDialog(myBusy.getFrame(), "Error message", "Error!", style = wx.OK | wx.ICON_EXCLAMATION | wx.STAY_ON_TOP) 

这是一个难以解决的问题,但这些信息应该可以帮助那些遇到同样问题的人。