QMessageBox — это часто используемый модальный диалог для отображения некоторого информационного сообщения и, при желании, попросить пользователя ответить, нажав любую из стандартных кнопок на нем. Каждая стандартная кнопка имеет предопределенный заголовок, роль и возвращает предопределенное шестнадцатеричное число.
Важные методы и перечисления, связанные с классом QMessageBox, приведены в следующей таблице:
Sr.No. | Методы и описание |
---|---|
1 |
SetIcon () Отображает предопределенный значок, соответствующий серьезности сообщения Вопрос Информация Предупреждение критический |
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.Retry 0x00080000 QMessageBox.Ignore 0x00100000 |
7 |
setDefaultButton () Устанавливает кнопку по умолчанию. Выдает сигнал нажатия, если нажата Enter |
8 |
setEscapeButton () Устанавливает кнопку, которая будет обрабатываться как нажатая, если нажата клавиша выхода |
SetIcon ()
Отображает предопределенный значок, соответствующий серьезности сообщения
Вопрос
Информация
Предупреждение
критический
SetText ()
Устанавливает текст основного сообщения для отображения
setInformativeText ()
Отображает дополнительную информацию
setDetailText ()
Диалог показывает кнопку Подробности. Этот текст появляется при нажатии на него
SetTitle ()
Отображает пользовательский заголовок диалога
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.Retry 0x00080000
QMessageBox.Ignore 0x00100000
setDefaultButton ()
Устанавливает кнопку по умолчанию. Выдает сигнал нажатия, если нажата Enter
setEscapeButton ()
Устанавливает кнопку, которая будет обрабатываться как нажатая, если нажата клавиша выхода
пример
В следующем примере нажмите сигнал кнопки в окне верхнего уровня, подключенная функция отобразит диалоговое окно сообщения.
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)
Сигнал buttonClicked () подключен к функции слота, которая идентифицирует заголовок источника сигнала.
msg.buttonClicked.connect(msgbtn)
Полный код для примера выглядит следующим образом:
import sys from PyQt4.QtGui import * from PyQt4.QtCore import * def window(): app = QApplication(sys.argv) w = QWidget() b = QPushButton(w) b.setText("Show message!") b.move(50,50) b.clicked.connect(showdialog) w.setWindowTitle("PyQt Dialog 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_() print "value of pressed message box button:", retval def msgbtn(i): print "Button pressed is:",i.text() if __name__ == '__main__': window()
Приведенный выше код производит следующий вывод —