2016-06-22 2 views
0

Я работаю над некоторым программным обеспечением для компании, над которой я работаю. Я использую wx для графического интерфейса. У меня в основном есть: Когда программа занята или загружается, я создаю объект wx.BusyInfo. Но иногда, когда этот загруженный информационный ящик все еще виден, и мне нужно распечатать сообщение об ошибке для пользователя, но этот MessageDialog фактически появляется под полем BusyInfo. Зачем? Есть ли способ сделать ошибку в верхней части BusyInfo? Я попробовал параметр wx.STAY_ON_TOP, и он не сработал.wx Python MessageDialog появляется за блоком BusyInfo?

Мне нужно, чтобы он работал таким образом, потому что мои классы запутываются, и я не хочу удалять 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) 

ответ

0

После много Google поисков и исследований я узнал, как решить эту проблему! Во-первых, вместо использования 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 

Затем я делаю этот код, чтобы заставить его работать правильно с сообщением об ошибке ВЫШЕ Busy поле Info:

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

Этот было трудной проблемой для решения, но эта информация должна помочь другим людям, которые сталкиваются с одной и той же проблемой.

Смежные вопросы