Учебники

PyQt — QMessageBox

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()

Приведенный выше код производит следующий вывод —