0

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

我需要它以这种方式工作,因为我的课程越来越复杂,我不想删除 BusyInfo,显示错误,然后重新创建 BusyInfo;对于我的代码来说,将 MessageDialog 错误显示在 BusyInfo 框的顶部会更容易。

谢谢。

这是我正在尝试做的一些示例代码:

# 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)
4

1 回答 1

0

经过大量的谷歌搜索和研究,我发现了如何解决这个问题!首先,我没有使用 wx.BusyInfo,而是使用 PyBusyInfo(我在这里找到了代码:https ://searchcode.com/codesearch/view/63249201/ )。这是因为 wx.BusyInfo 实际上不是从 wx.Window 类继承的,但 PyBusyInfo 是;我们需要busy的框架,因为我们将把它传递给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)

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

于 2016-06-27T23:41:36.997 回答