0

私は私が働いている会社のためにいくつかのソフトウェアに取り組んでいます。GUIにはwxを使用しています。私は基本的にこれを持っています: プログラムがビジーまたはロード中の場合、wx.BusyInfo オブジェクトを作成します。ただし、このビジー情報ボックスがまだ表示されている間に、ユーザーにエラー メッセージを出力する必要がある場合がありますが、その MessageDialog は実際には BusyInfo ボックスの下に表示されます。なんで?BusyInfo の上にエラーを表示する方法はありますか? wx.STAY_ON_TOP オプションを試しましたが、うまくいきませんでした。

クラスが複雑になり、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)
4

1 に答える 1

0

多くのグーグル検索と調査の後、私は問題を解決する方法を見つけました! まず、wx.BusyInfo を使用する代わりに、PyBusyInfo を使用します (ここでコードを見つけました: https://searchcode.com/codesearch/view/63249201/ )。これは、wx.BusyInfo は実際には wx.Window クラスから継承されていませんが、PyBusyInfo は継承されているためです。wx.MessageDialog に渡すので、busy のフレームが必要です。次に、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)

これは解決するのが難しい問題でしたが、この情報は、同じ問題に遭遇した他の人に役立つはずです。

于 2016-06-27T23:41:36.997 に答える