Дōбрōгō времени суток, читатели, зрители мōего канала programmer's notes. Не забывайте пōдписываться и писать свōи кōмментарии к мōим статьям и видеō.
Стандартные диалоговые окна в PyQt5
Сегодня статья простая и очень важная. Часто при создании оконных приложений необходимо выбирать файлы, каталоги, создавать простые окна для ввода каких-то значений. Мы можем облегчить себе работу, если воспользуемся уже готовыми диалоговыми окнами, которые есть в PyQt5.
Для начала перечислим классы диалоговых окон
- PyQt5.QtWidgets.QFileDialog() — диалоговое окно для выбора файла или каталога (папки).
- PyQt5.QtWidgets.QColorDialog() — диалоговое окно для выбора цвета.
- PyQt5.QtWidgets.QMessageBox() — диалоговое окно для сообщений с возможностью выбора вариантов продолжения.
- PyQt5.QtWidgets.QInputDialog() — диалоговые окна для ввода чисел, выбора из списка, ввода текстовой строки.
Все перечисленные диалоговые окна вызываются по одной схеме:
- Создаётся объект соответствующего класса.
- Для вывода диалога используется тот или иной метод класса. Как правило таких методов несколько, соответственно можно получить несколько разновидностей соответствующего диалогового окна.
Конечно, я не буду переписывать документацию по стандартным диалоговым окнам. Она весьма обширна. Приведу лишь несколько примеров.
Также хотел бы напомнить читателю о позиционных и именованных параметрах. Указание именованных параметров у функции позволяет вызывать функцию и с позиционными параметрами и с именованными. А можно и вперемежку. Главное, чтобы позиционные параметры шли первыми.
Класс QFileDialog
Класс QFileDialog позволяет создавать диалог для выбора файла из существующих или выбора существующего каталога. Можно также создать диалог для выбора имени файла и каталога, для его сохранения (метод getSaveFileName()).
Пример фрагменте выбора файла
Результат работы программы см. рисунок 1
Заметим, что метод getOpenFileName() большой набор параметров. Можно, например, выбрать набор фильтров для просмотра каталогов, так, чтобы видны были только указанные в фильтре файлы. Также указывается каталог, откуда начинается просмотр дерева каталогов. Не забываем о позиционных и именованных параметров. Можно пользоваться или тем или другим, или вперемежку, учитывая только, что все позиционные параметры должны идти в начале списка. Если файл был выбран (кнопка Open) то переменная file содержит полный путь к файлу. В противном случае переменная равна пустой строке.
Пример фрагмента выбора каталога. Метод getExistingDirectory().
Диалоговое окно имеет особенность. Кнопка Open означает выбор текущего каталога. Движение же по каталогам осуществляется с помощью щелчков мыши. Если каталог выбран, то переменна dir будет равна полному пути к каталогу, в противном случае переменной присваивается пустая строка.
Класс QColorDialog
Класс предназначен для диалогового выбора цвета. Очень удобный и полезный класс.
Пример фрагмента выбора цвета (метод getColor()). См. Рисунок 2
Ниже окно выбора цвете.
Метод getColor() возвращает новый объект color. С помощью метода isValid() проверяем, что цвет выбран. Метод name() возвращает строку - цвет в html-стиле.
Класс QMessageBox
Класс QMessageBox позволяющий создавать окно сообщения, с возможность закрытие его с выбором разных вариантов.
Пример программы использования диалоговое окно сообщение, с выбором вариантов. См. рисунок 3
Результат выполнения программы см. на рисунке 3
Набор констант, описывающих возможные кнопки сообщения (варианты выхода)
QMessageBox.Ok
QMessageBox.No
QMessageBox.Yes
QMessageBox.Cancel
QMessageBox.Close
QMessageBox.Abort
QMessageBox.open
QMessageBox.Retry
QMessageBox.Ignore
QMessageBox.Save
QMessageBox.Retry
QMessageBox.Apply
QMessageBox.Help
QMessageBox.Reset
QMessageBox.SaveAll
QMessageBox.YesToAll
QMessageBox.NoToAll
Если не указывать ни одной из данных констант, то всё равно в диалоговом окне будет одна кнопка Ok.
Класс QInputDialog
Класс QInputDialog позволяет создавать простые окна ввода.
Примеры диалогов ввода см. ниже. Даны варианты ввода целого числа, выбора элемента из списка, ввода строки. На рисунке 4 окно выбора элемента из списка.
Пример окна выбора элемента из списка
Кроме диалога ввода целого числа, элемента из списка, строки текста: getInt(), getItem(), getText(), возможны также getDouble() и getMultiLineText() для ввода вещественного числа и многострочного текста.
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.