Окно выбора файла pyqt

Обновлено: 04.07.2024

В этой статье рассказывается о разработке простого диалогового окна с помощью инструмента PyQt5 designer tool, а также о преобразовании и интеграции его в python.

Как настроить конструктор PyQt5 и интегрировать пользовательский интерфейс

С PyQt5 вам нужно хорошо разбираться в базовом Python, но я постараюсь сделать это как можно проще.

В этой статье я расскажу вам, как с помощью Qt Designer создать простой диалог, преобразовать разработанный пользовательский интерфейс в Python и выполнить код.

Инструменты, Технологии и библиотеки:

Операционная система: Windows 10

Редактор: Код Visual Studio

Python: 3.6

Библиотеки PyQt5: Если вы еще не установили Python 3.6 на свою ОС, перейдите по этой ссылке , чтобы загрузить установщик Python.

Pip (система управления пакетами, используемая для установки и управления библиотеками и пакетами, написанными на python) должна быть установлена как часть Python.

Если вы не можете найти установку трубы, следуйте инструкциям здесь .

После установки Python и pip используйте следующие команды для установки конструктора PyQt5, инструментов и пакетов.

Вы найдете различные библиотеки с папками PyQt5, установленными в этом месте по умолчанию: C:\Program Файлы (x86)\Python 36-32\Lib\site-packages (в ОС Windows).

Как запустить инструмент PyQt5 Designer

Перейти к C:\Program Файлы (x86)\Python 36-32\Lib\site-packages\pyqt5-tools и найдите designer.exe . Дважды щелкните, чтобы открыть Qt Designer.

Примечание: Путь будет варьироваться в зависимости от используемой ОС.

Выбор шаблона PyQt5

Вы можете изменить свойства диалогового окна с помощью редактора свойств. Я просто изменил название окна.

Теперь сохраните разработанный диалог как dialog.ui .

Диалог преобразования.ui to dialog.py

Используйте приведенную ниже команду в командной строке.

Приведенная выше команда преобразует файл dialog.ui в dialog.py .

Затем мы внесем некоторые незначительные изменения и выполним код Python. Я изменил имя класса, сгенерированное командой, чтобы сохранить его значение.

Это окончательный код класса Dialog, сгенерированный из файла dialog.ui.

Это окончательный код класса Dialog, сгенерированный из файла dialog.ui.

Это окончательный код класса Dialog, сгенерированный из файла dialog.ui.

Я надеюсь, что это было полезно для начинающих Python и PyQt! Пожалуйста, дайте мне знать, если у вас возникнут какие-либо проблемы с преобразованием разработанного пользовательского интерфейса из конструктора PyQt5.

Этот пост первоначально опубликован автором здесь Эта версия была отредактирована для ясности и может отличаться от оригинальной записи.

Диалоги в PyQt5

Диалоговые окна или диалоги являются незаменимой частью большинства современных графических приложений. Диалог определяется как беседа между двумя и более людьми. В компьютерном приложении, диалог – это окно, которое используется, чтобы «разговаривать» с приложением. Диалог используется для ввода данных, изменения данных, изменения настроек приложения, и т.д.

QInputDialog

QInputDialog обеспечивает простой удобный диалог для получения единственного значения от пользователя. Введённое значение может быть строкой, числом или пунктом из списка.

Пример имеет кнопку и виджет редактирования строки. Кнопка показывает диалог ввода для получения текстовых значений. Вводимый текст может быть отображён в виджете редактирования строки.

Текст, который мы получили из диалога, устанавливается в виджет редактирования строки.

Ввод диалога

Рисунок: Ввод диалога

QColorDialog

QColorDialog обеспечивает виджет диалога для выбора цветовых значений.

Пример приложения показывает кнопку и QFrame. Фон виджета устанавливается чёрным цветом. Используя QColorDialog, мы можем менять фон.

Это первоначальный цвет фона QtGui.QFrame.

Это строка высветит QColorDialog.

Мы проверяем, является ли цвет валидным. Если мы нажимаем кнопку «Cancel», возвращается невалидный цвет. Если цвет валиден, мы меняем цвет фона, используя таблицы стилей (CSS).

QFontDialog

QFontDialog – это виджет диалога для выбора шрифта.

В нашем примере, мы имеем кнопку и метку. С помощью QFontDialog, мы меняем шрифт метки.

Здесь мы высвечиваем диалог со шрифтами. Метод getFont() возвращает имя шрифта и параметр ok. Он равен «Истине», если пользователь кликнул «ОК»; в противном случае, параметр – «Ложь».

Если бы мы кликнули «ОК», шрифт метки б изменился.

Диалог со шрифтами

Рисунок: Диалог со шрифтами

QFileDialog

QFileDialog – это диалог, который позволяет пользователям выбирать файлы или папки. Файлы могут быть выбраны и для открытия, и для сохранения.

Пример показывает строку меню, центрально-установленный виджет редактирования текста и строку состояния. Пункт меню показывает QtGui.QFileDialog, который используется для выбора файла. Содержание файла загружается в виджет редактирования текста.

Пример основывается на виджете QMainWindow, поскольку мы установили по центру виджет редактирования текста.

Мы высвечиваем QFileDialog. Первая строка в методе getOpenFileName() – это заголовок. Вторая строка указывает диалог рабочей папки. По умолчанию, файловый фильтр установлен в положение «Все файлы (*)».

Выбранное имя файла читается и содержание файла устанавливается в виджет редактирования текста.

Диалоговое окно — в графическом интерфейсе специальный элемент, окно, предназначенное для вывода информации или получения ответа от пользователя. Получил своё название потому, что осуществляет двустороннее взаимодействие компьютер-пользователь сообщая пользователю что-то и ожидая от него ответа.

Использовать мы будем набор расширений графического фреймворка Qt для языка программирования Python.

Для начала познакомимся с самым распространенным элементом интерфейса под названием QInputDialog. Простой диалог для получения значения от пользователя. Данные которые вы передаете в диалог могут быть строкой, числом или пунктом списка.

Ниже приведен простой для понимания пример кода, который при его исполнении покажет диалог ввода.

В данном примере задействована одна кнопка, при нажатии на нее будет показан диалог ввода где пользователь вводит значение

Механизм работы очень прост. Вы вводите значение в поле и нажимаете OK после чего данные передаются в основное окно программы.

Рис 1. Диалог ввода (QInputDialog)

Еще один часто используемый виджет QColorDialog диалог для выбора цвета. Очень удобный элемент в приложении где используется метод работы с цветом и нужно часто менять цвет определенного элемента.

Рис 2. Диалог выбора цвета (QColorDialog)

Рис 2. Диалог выбора цвета (QColorDialog)

Пример приложения показывает кнопку для выбора цвета и элемент для демонстрации. Выбираем нужный цвет и меняем цвет элемента с помощью каскадных таблицы стилей(CSS).

Для работы с файловой системой предусмотрен QFileDialog. Диалог выбора файлов и папок из вашей системы. Вы можете использовать данный элемент интерфейса для открытия файлов или для их сохранения.

Рис 3. Диалог выбора цвета (QFileDialog)

Рис 3. Диалог выбора цвета (QFileDialog)

Выбираем в диалоге нужный нам файл и читаем содержимое в виджет для редактирования текста

Вы можете настроить диалог и указать заголовок окна выбора, дерикторию открытия по умолчанию. Так же есть возможность указать какие типы файлом доступны для открытия например только *py.

PyQt имеет множество виджетов, включая кнопки, чекбоксы, ползунки и списки. Но об этом в следующих публикациях…

На этом шаге рассмотрим стандартное диалоговое окно выбора файлов.

Использование стандартных окон значительно ускоряет разработку тех приложений, в которых необходимо использовать диалоговые окна выбора файлов, шрифта, цвета и т. д. Вместо того чтобы тратить время на разработку своих собственных классов, можно воспользоваться готовыми классами библиотеки Qt. К достоинствам стандартных диалоговых окон можно отнести и целостность пользовательского интерфейса, т. к. вид окон во всех приложениях, их использующих, будет один и тот же.

Диалоговое окно выбора файлов предназначено для выбора одного или нескольких файлов, а также файлов, находящихся на удаленном компьютере, и поддерживает возможность переименования файлов и создания каталогов.

Класс QFileDialog предоставляет реализацию диалогового окна выбора файлов (рис. 1) и отвечает за создание и работоспособность сразу трех диалоговых окон. Одно из них позволяет осуществлять выбор файла для откры-тия, второе предназначено для выбора пути и имени файла для его сохранения, а третье — для выбора каталога.


Рис.1. Диалоговое окно выбора файлов

Класс QFileDialog унаследован от класса QDialog. Его определение находится в файле QFileDialog.

Этот класс предоставляет следующие статические методы:

  • getOpenFileName() — создает диалоговое окно выбора одного файла. Этот метод возвращает значение типа QString, содержащее имя и путь выбранного файла (см. рис. 1);
  • getOpenFileNames() — создает диалоговое окно выбора нескольких файлов. Возвращает список строк типа QStringList, содержащих пути и имена файлов;
  • getSaveFileName() — создает диалоговое окно сохранения файла. Возвращает имя и путь файла в строковой переменной типа QString;
  • getExistingDirectory() — создает окно выбора каталога. Этот метод возвращает значение типа QString, содержащее имя и путь выбранного каталога.

Первым параметром этих методов является указатель на объект-предок, вторым передается текст заголовка окна, третьим — строка, представляющая собой рабочий каталог.

Вызов метода getOpenFileName() запустит диалоговое окно открытия файла (см. рис. 1). Четвертый параметр, передаваемый в этот метод, представляет собой фильтр (или маску), задающий расширение файлов. Например:

Покажем, как можно использовать статический метод getSaveFileName(), предназначенный для диалогового окна записи файла.

Файлы приложения можно взять здесь.

При помощи метода getExistingDirectory() можно предоставить пользователю возможность выбора каталога (рис. 2). Например:


Рис.2. Диалоговое окно выбора папки

Файлы приложения можно взять здесь.

На следующем шаге рассмотрим cтандартное диалоговое окно настройки принтера.

Читайте также: