はじめに
前回はDialog
クラスについてご紹介しました。
今回は,QMessageBox
についてご紹介致します。
QMessageBox
は一般的に使用されるモーダルダイアログで、色々な情報をメッセージ表示しオプションで標準ボタンからユーザーに応答を求める機能があります。
QMessageBox
の主要メソッドまとめ
QMessageBox
クラスに関連する重要なメソッドは以下のようになります。
1:setIcon()
メッセージの重大度に対応する定義済みのアイコンを表示する
Question
Information
Warning
Critical
2:setText()
表示されるメインメッセージのテキストを設定する
3:setInformativeText()
追加情報を表示する
4: setDetailText()
ダイアログに詳細ボタンを表示します。それをクリックするとこのテキストが表示されます
5:setTitle()
ダイアログのカスタムタイトルを表示します
6:setStandardButtons()
表示される標準ボタンのリスト。各ボタンは次のように関連付けられています。
QMessageBox.Ok 0x00000400
QMessageBox.Open 0x00002000
QMessageBox.Save 0x00000800
QMessageBox.Cancel 0x00400000
QMessageBox.Close 0x00200000
QMessageBox.Yes 0x00004000
QMessageBox.No 0x00010000
QMessageBox.Abort 0x00040000
QMessageBox.リトライ 0x00080000
QMessageBox.Ignore 0x00100000
7:setDefaultButton()
ボタンをデフォルトとして設定します。Enterが押されるとクリックされたという信号を出します。
8:setEscapeButton()
エスケープキーが押された場合、ボタンがクリックされたものとして扱われるように設定する
デモ
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def window():
app = QApplication(sys.argv)
w = QWidget()
b = QPushButton(w)
b.setText("Show message!")
b.move(100,50)
b.clicked.connect(showdialog)
w.setWindowTitle("PyQt MessageBox demo")
w.show()
sys.exit(app.exec_())
def showdialog():
msg = QMessageBox()
msg.setIcon(QMessageBox.Information)
msg.setText("This is a message box")
msg.setInformativeText("This is additional information")
msg.setWindowTitle("MessageBox demo")
msg.setDetailedText("The details are as follows:")
msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
msg.buttonClicked.connect(msgbtn)
retval = msg.exec_()
def msgbtn(i):
print ("Button pressed is:",i.text())
if __name__ == '__main__':
window()
実行すると以下のようなウィンドウが出力されます。
ボタンを押すと次のようなウィンドウが表示されます。
そして,OKボタンやCancelボタンを押すと以下のようなメッセージが出力されます。
プログラム解説
以下でQMessageBox
クラスを作成しています。
msg = QMessageBox()
msg.setIcon(QMessageBox.Information)
msg.setText("This is a message box")
msg.setInformativeText("This is additional information")
msg.setWindowTitle("MessageBox demo")
msg.setDetailedText("The details are as follows:")
そしてsetStandardButton()
で表示したいボタンを設定しています。
msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
以下でボタンクリックシグナルに対するスロットを設定しています。
msg.buttonClicked.connect(msgbtn)
参考