wx.MessageBoxの戻り値(return)
プログラミング言語Python(パイソン)に関する話です。
wxPythonのメッセージ関数 wx.MessageBox()
この関数の正しい戻り値に関する情報がほとんど見つけられなかったので書かせてもらいます。
目次
確認環境
- Windows 10 Home(64bit)
- Python 3.8.2(64bit)
- wxPython 4.7.2.post2
wx.MessageBox()の使い方
wx.MessageBox()は、wxPythonのメッセージダイアログ関数wx.MessageDialog()のヘルパー関数です。
wx.MessageBox()の中でwx.MessageDialog()のShowModal()を行っています。
wx.MessageBox()の戻り値以外の、詳しい使い方を知りたい方は他所で調べてください。
こんな感じの確認ダイアログを表示する場合、styleにwx.YES_NOを指定して
1 |
wx.MessageBox(u"終了ボタンがクリックされました。\n終了します。よろしいですか?", u"終了確認", style = wx.YES_NO) |
上記で実現することができます。
wx.MessageBox()の戻り値(return)
ここから「はい(Y)」「いいえ(N)」のどちらが選択されたのか知るには、戻り値で判断します。
インターネットで結構調べました。
「wx.ID_OK」「wx.ID_YES」「wsYES」などいろいろ書いていましたが(少なくとも私の環境では)どれも違いました…
私にとっての正解は「wx.YES」でした。
どうしてただこれだけの情報がすぐに出てこないんでしょうね。Googleサジェストでも「wx.MessageBox 戻り値」が出てくるので多くの人が検索しているのだと思います。
そもそも戻り値の取り方のサンプルすら見つけられない気がします。(ただしwx.MessageDialog()の情報はたくさんあります。)
サンプルプログラムとしては以下のようになります。
1 2 3 4 5 6 7 |
ret = wx.MessageBox(u"終了ボタンがクリックされました。\n終了します。よろしいですか?", u"終了確認", style = wx.YES_NO) if ret == wx.YES: wx.MessageBox(u"「はい」が選択されました", u"確認", wx.ICON_INFORMATION) elif ret == wx.NO: wx.MessageBox(u"「いいえ」が選択されました", u"確認", wx.ICON_INFORMATION) |
ちなみに
- wx.YESの定義値は「2」
- wx.NOの定義値は「8」
です。
補足
補足になりますが、wx.MessageDialog(wx.YES_NO)の戻り値は
- YES→wx.ID_YES
- NO→wx.ID_NO
となっています。
表にしてみると
戻り値 | wx.MessageBox() | wx.MessageDialog() |
YESを選択 | wx.YES | wx.ID_YES |
NOを選択 | wx.NO | wx.ID_NO |
ということです。
上で「wx.MessageBox()は、wxPythonのメッセージダイアログ関数wx.MessageDialog()のヘルパー関数です。」と書きましたが、ヘルパー関数なのに戻り値を変えているということでしょうか…
ヘルパー関数であろうとなかろうと、戻り値を統一してほしかったところです。
きっと海より深い理由があるのでしょう。
参考サイト
↑2007年時点の情報なので、Python2の話だと思います。念のため。
以上。
後記
最後までお読みくださりありがとうございます。
こんなに更新したのに、現在はほぼ誰も見ていないゴミカスクズ無価値ブログです。
よければ(はてな)ブックマークや拡散をお願いいたします。
更新の原動力として励ましが欲しいのです…<(_ _)>
ディスカッション
コメント一覧
まだ、コメントがありません