Что такое месседж бокс
С помощью функции MessageBox можно вывести на экран окно сообщения с заданными заголовком и текстом. Окно можно дополнить иконкой из специально предназначенного для этого стандартного набора со следующими символами:
- «!» — для сообщений, требующих повышенного внимания пользователя;
- «i» — для сообщений информационного характера;
- «?» — для сообщений, содержащих вопрос;
- знак «стоп» — для сообщений о критических ошибках.
Для обратной связи с пользователем окно снабжено одним из стандартных наборов кнопок:
- «OK»;
- «OK», «Отмена»;
- «Повторить», «Отмена»;
- «Да», «Нет»;
- «Да», «Нет», «Отмена»;
- «Прервать», «Повторить», «Пропустить».
API на основе свойств
Рассмотрим API на основе свойств, для этого создадим экземпляр QMessageBox, установим свойства и вызовем exec() для вывода сообщения.
В результате будет показан модельный диалог с сообщением “Текс”. Для закрытия окна нужно нажать кнопку ОК или закрыть окно. Во время показа диалога остальная часть GUI блокируется до тех пор, пока окно сообщения не будет закрыто.
В данном методе можно добавить дополнительные кнопки методом setStandardButtons().
Кнопка по умолчанию (то есть кнопка, активируемая при нажатии клавиши Enter) может быть указана с помощью setDefaultButton(). Если кнопка по умолчанию не указана, QMessageBox пытается найти ее на основе ролей кнопок, используемых в окне сообщения. Экранирующая кнопка (кнопка, активируемая при нажатии клавиши Esc) может быть указана с помощью setEscapeButton(). Если кнопка выхода не указана, QMessageBox пытается найти кнопку, используя эти правила:
- Если есть только одна кнопка, она активируется при нажатии Esc
- Если есть кнопка «Отмена», то эта кнопка активируется при нажатии Esc
- Если есть ровно одна кнопка с ролью «Отклонить» или роль «Нет», то эта кнопка активируется при нажатии клавиши Esc
- Когда кнопка выхода не может быть определена с использованием этих правил, нажатие клавиши Esc не имеет никакого эффекта
При нажатия на кнопку метод msgBox.exec() вернет идентификатор выбранной кнопки.
Пример обработки выбранной кнопки:
Для добавление иконки вызовем метод msgBox.setIcon(), данный метод позволяет добавить свою иконку или использовать из набора QMessageBox.
Иконки, которые входят в стандартный набор QMessageBox:
![]() | QMessageBox ::Question | Вопрос во время нормальной работы |
![]() | QMessageBox::Information | Для сообщения информации во время нормальной работы |
![]() | QMessageBox::Warning | Для сообщения о некритических ошибках |
![]() | MessageBox::Critical | Для сообщения о критических ошибках |
- Они работают быстрее для пользователя, так как помогут быстрее делать выбор одним щелчком, а не двумя. Типичный щелчок занимает от 1,2 до 2,4 секунды.
- Для сенсорных интерфейсов легче выбрать переключатель, чем перемещаться по раскрывающемуся списку.
- Вы можете предоставить все варианты сразу(доступность).
Чтобы создать переключатель, мы будем использовать модуль tkinter языка Python. Давайте посмотрим на код.
В приведенном выше фрагменте кода мы сначала импортируем модуль tkinter и инициализируем фрейм tkinter с помощью Tk() . Внутри этого root фрейма мы создаем две радиокнопки, используя функцию Radiobutton() которая принимает такие параметры, как имя фрейма, текст и значение. Затем мы используем функцию pack() , чтобы разбить этот виджет на строки и столбцы.
Вывод приведенного выше фрагмента кода показан ниже: