Qt designer pycharm как открыть
Перейти к содержимому

Qt designer pycharm как открыть

  • автор:

Интеграция Qt Designer и PyCharm

Если вы просто хотите открыть файлы.ui в QT Designer, есть более простое решение.

Перейдите в Настройки|Типы файлов и нажмите на «Файлы открыты в связанных приложениях», перейдите в поле Зарегистрированные шаблоны и добавьте *.ui в качестве шаблона. Он будет жаловаться, что *.ui уже зарегистрирован в QT Designer. Нажмите OK, чтобы переназначить подстановочный знак. Теперь, когда вы дважды щелкнете на файле.ui в PyCharm, он откроется с помощью связанного редактора в Windows (который должен быть Designer).

Если PyCharm уже связал расширение.ui с каким-то типом файла, вы можете легко переопределить это, выбрав файл в браузере проекта и выбрав File|Associate with File Type. из меню. Выберите Открыть соответствующие файлы в связанном приложении , чтобы PyCharm открыл любое приложение, связанное с типом файла в Windows.

Как добиться видимости объектов созданных в формах Qt Designer при разработке кода в PyCharm?

Разрабатываю виртуальные лабы по физике. Создаю форму в qt designer, создаю в ней нужные кнопки,объекты,ползунки и прочее, далее нужно прописывать их действия, это делаю на Python’е
Создал файл, создаю класс и загружаю свою Ui форму

class TestLaba(QMainWindow): def __init__(self): super(TestLaba, self).__init__() uic.loadUi('TEST.ui', self)

И вот хочу например задать кнопке какой-то значение. Пишу self. и думаю,как же я её назвал, лезу в форму,смотрю название, обращаюсь к ней self.button. И думаю, ля,а какие у неё методы вообще
Приходиться писать QtWidjets.QButton. чтобы посмотреть методы по подсказке
Да,я в курсе,что есть документация и прочее, но так удобно, когда есть подсказки
Проблема в том,что питон файл и класс с котором я веду разработку не видят объекты созданные в форме, когда я пишу код
Разумеется,если я напишу self.button.clicked.connect(self.метод_с_действием_кнопки) он сработает,но хотелось бы не писать с завязанными глазами
Я нашёл другой вариант, можно конвертировать UI в Py, так и сделал, получить файл со всеми переменными

class Ui_Laba2(object): def setupUi(self, Laba2): Laba2.setObjectName("Laba2") Laba2.resize(948, 759) Laba2.setStyleSheet("background-color: rgb(167, 255, 207);") self.centralwidget = QtWidgets.QWidget(Laba2) self.centralwidget.setObjectName("centralwidget") self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.verticalLayoutWidget.setGeometry(QtCore.QRect(50, 50, 501, 71)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.Reostat = QtWidgets.QSlider(self.verticalLayoutWidget) self.Reostat.setMaximum(240) self.Reostat.setSingleStep(1) self.Reostat.setSliderPosition(0) self.Reostat.setTracking(True) . 

И импортировал его в свой код и стал загружать уже не Ui ,а Py

import labaa2 class Laba2(QMainWindow,labaa2.Ui_Laba2): def __init__(self): super().__init__() self.setupUi(self)

И теперь если я напишу self. мне выдадутся подсказки,какие объекты у меня есть
5f8c69254597f587872077.png
И чтобы узнать какие есть методы у моего слайдера не нужно будет писать QtWidgets.QSlider. и смотреть подсказки,а просто написать
5f8c6961bf23e488156886.png
И вот казалось бы счастье, но я разрабатываю это приложение, постоянно меняю форму, пишу тестовые методы
А Py файл, который получен при конвертации из Ui не обновляется сам, тобишь при каждом изменении надо бы снова конвертировать файл,а для этого нужно открыть cmd написать pyuic5 path.io -o path.py
Как-то не очень удобно.
В статье https://tproger.ru/translations/python-gui-pyqt/ написано,что «файл с дизайном будет полностью перезаписываться каждый раз при изменении дизайна, мы не будем изменять его.»
и было бы очень неплохо,чтобы так было. Как можно этого добиться или как иным путём можно оптимизировать работу?

  • Вопрос задан более трёх лет назад
  • 1086 просмотров

4 комментария

Средний 4 комментария

Qt projects

Qt is a cross-platform C++ framework for creating GUI applications. Qt uses its own build system, qmake, and also supports building with CMake starting from the version Qt4.

A pure Qmake project can’t be imported in CLion directly. However, when converted into CMake, it can be opened and managed as a regular CMake application. You can also create a CMake-based Qt project in CLion using the New Project wizard.

Another option to open a Qt project is to use a compilation database. You can generate compile_commands.json for your qmake project with the help of scan-build or via the Build | Generate Compilation Database action in Qt Creator, then open this file as a project in CLion and add custom build targets and custom Run/Debug configurations for it.

CMake-based Qt projects

For CMake version 3.0 and newer, Qt ships the modules that let CMake find and use Qt4 and Qt5 libraries. Take the following steps to configure CMakeLists.txt for your Qt project.

CMakeLists.txt for a Qt project

  1. Add the find_package command to locate the required libraries and header files. For example:

find_package(Qt5Widgets REQUIRED)
Then, use target_link_libraries to make your target dependent on these libraries and headers:
target_link_libraries(helloworld Qt5::Widgets)
set(CMAKE_PREFIX_PATH «C:\\Qt\\Qt5.14.0\\5.14.0\\mingw73_32\\»)
set(CMAKE_PREFIX_PATH «C:\\Qt\\Qt5.14.0\\5.14.0\\mingw73_32\\lib\\cmake\\»)
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON)
add_executable( helloworld main.cpp mainwindow.cpp application.qrc )

Below you can find the full CMakeLists.txt script for a simple «Hello, world» application:

cmake_minimum_required(VERSION 3.10) project(Qt-CMake-HelloWorld) set(CMAKE_CXX_STANDARD 17) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_PREFIX_PATH «C:\\Qt\\Qt5.14.0\\5.14.0\\mingw73_32\\») find_package(Qt5Widgets REQUIRED) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) add_executable(helloworld main.cpp mainwindow.cpp application.qrc) target_link_libraries(helloworld Qt5::Widgets)

Setting up a Qt project in CLion

Toolchains on Windows

  1. When installing Qt on Windows, pick the distributive that matches the environment you are using in CLion, MinGW or MSVC. For MinGW, both the version and the bitness (32-bit MinGW or MinGW-w64) should match with your toolchain setup. Qt installer
  2. In CLion, go to Settings ( Control+Alt+S ), navigate to Build, Execution, Deployment | Toolchain and select the toolchain that matches your Qt installation. If you have several Qt installations, make sure to select the same toolchain as the one you specified in CMAKE_PREFIX_PATH . As an example, in the case of MinGW: MinGW toolchain

For more information about Windows toolchains, refer to the MinGW or MSVC section of our Windows Tutorial.

CMake settings

CMake options for a Qt project

  • Qt projects are handled as regular CMake projects in CLion, so you can configure CMake settings in Settings | Build, Execution, Deployment | CMake as necessary. For example, you can create different CMake profiles with different build types and set up CMake generators of your choice. In this dialog, you can also specify CMake options, such as CMAKE_PREFIX_PATH instead of setting them in CMakeLists.txt :

Debugger renderers

You can use Qt type renderers, which are usually shipped with Qt tools, for your project in CLion. However, for now, you need to set them manually either using the .gdbinit / .lldbinit scripts or, in the case of MSVC, via native visualizers.

  • Windows MSVC CLion’s debugger for the MSVC toolchain can employ native visualizers if you have them in your project. Make sure to set the Enable NatVis renderers for LLDB option in Settings | Build, Execution, Deployment | Debugger | Data Views | C/C++ . For example, copy qt5.natvis under your project root, and CLion will automatically detect and use it for rendering.
  • Windows MinGW / macOS / Linux For non-MSVC toolchains, a solution would be to configure the Qt renderers via .gdbinit/.lldbinit. These scripts are loaded on every invocation of GDB or LLDB, respectively.
    1. You can try KDevelop formatters for GDB, KDevelop formatters for LLDB, Lekensteyn’s qt5printers (GDB), or create your own pretty-printers. To create custom pretty printers, follow the official instructions for LLDB or GDB. You can take the pretty-printers for Rust implemented in the IntelliJ Rust plugin as a reference.
    2. Point the debugger to your renderers via .gdbinit / .lldbinit . Find an example in this github repo.
    3. Place the .gdbinit / .lldbinit files under the project root and allow them in your home directory as described here.

Open UI files in Qt Designer

By default, CLion opens .ui files in Qt Designer.

The IDE searches for the path to Qt Designer in the Qt binaries folder specified in Settings | Languages & Frameworks | QML .

If you installed Qt Designer separately from Qt, CLion might not detect it and will open the .ui files in the editor. In this case, do the following to open them in Qt Designer:

  1. Go to Settings | Editor | File Types .
  2. Select Qt UI Designer Form from the Recognized File Types list, and delete the associated file extension: Removing the association for .ui files
  3. Select Files opened in associated applications and add the .ui extension: Reassign .ui to external application
  4. Cick Reassign Wildcard .
  5. Click Apply and close the dialog. Next time you double-click a .ui file in the Project tree, it will be opened in Qt Designer.

Creating a CMake-based Qt project

CLion provides two project templates for Qt: Qt Console Executable and Qt Widgets Executable.

Call File | New Project and select the project type in the left-hand pane. Specify the location, language standard, and Qt version. You can also provide the path to be used in CMAKE_PREFIX_PATH . Click Create when ready.

Qt project templates

Qt Console Executable template project

CLion will generate a ready-to-go stub project with CMakeLists.txt filled in automatically, including the CMAKE_PREFIX_PATH variable:

You can edit the CMakeLists.txt template for Qt projects in Settings | Editor | File and Code Templates , the Other tab. For more information, refer to CMakeLists.txt file templates.

Qt UI class templates

You can quickly create a Qt class with the corresponding .ui , .cpp , and .h files.

  1. In the Project view, select New from the context menu or press Alt+Insert . Choose Qt UI Class : New Qt UI Class menu option
  2. In the dialog that opens, fill in the class name and configure the following settings:
    • Filename base — specify the name for the .ui / .cpp / .h files to be generated.
    • Parent class — select QWidget , QMainWindow , QDialog , or a custom parent class.
    • Namespace — specify the enclosing namespace if required.
    • Add to targets — set this checkbox to automatically add the new files to the list of sources for the selected target(s).

    New Qt UI Class dialog

  3. CLion will generate the .ui , .cpp , and .h files following the templates defined in Settings | Editor | File and Code Templates : Qt Designer Form, Qt Class, and Qt Class Header, respectively. If required, you can adjust these templates for your needs. Files generated for a new Qt UI class

Qt-specific code insight

  • CLion provides code completion for Qt signals and slots, filtering the suggestion list to show only the corresponding members: Completion for Qt signalsCompletion works for the SIGNAL() and SLOT() macros as well: Completion for the SLOT macro
  • CLion’s auto-import supports Qt-style header files, offering the shortest possible #include : Qt-style auto-import
  • Also, CLion integrates with clazy, a Qt-oriented static code analyzer. You can configure the severity and level of clazy checks in Settings | Editor | Inspections | C/C++ | Static Analysis Tools | Clazy : Clazy checks

QtCreator keymap

Switching to the Qt keymap

CLion bundles the QtCreator keymap. You can switch to it in Settings | Keymap or by calling View | Quick Switch Scheme from the main menu ( Control+` ):

Current limitations

  • Some of the CLion’s code generation features may not work for Qt macros, such as Q_PROPERTY , Q_SIGNAL , Q_SLOT , and others.
  • Although QML is not supported in CLion out of the box (refer to the feature request), you can try the QML Support plugin.

Troubleshooting

If you get the Process finished with exit code -1073741515 (0xC0000135) error message when running on MinGW, the issue might relate to Qt deployment on Windows: dynamic libraries and Qt plugins must be found from the directory of the running binary. Try one of the workarounds described below.

Option 1

  • Add the path to bin under the MinGW directory in the Qt installation (for example, C:\Qt\5.15.1\mingw81_64\bin ) to the system PATH or in the Environment variables field of the configuration settings. If this doesn’t solve the issue for your project, try Option 2 .

Option 2

Environment variable for the Qt plugins path

  1. Copy the .dll -s located in bin under the MinGW directory in the Qt installation to your project’s generation folder, which is cmake-build-debug or cmake-build-release by default. The libraries you will most likely need are libstdc++-6.dll , Qt5Widgets.dll , Qt5Gui.dll , and Qt5Core.dll , but your setup might require other libraries as well.
  2. In the settings of the configuration you use for running, set the QT_QPA_PLATFORM_PLUGIN_PATH environment variable to plugins\platforms under the MinGW directory: Another option is to copy the contents of plugins\platforms to cmake-build-debug(release)/platforms (make sure to create the platforms directory). For more information, refer to Qt Plugins.

Python GUI: создаём простое приложение с PyQt и Qt Designer

Помимо всего прочего, на Python можно создавать десктопные приложения с графическим интерфейсом (Python GUI). Это можно сделать с помощью PyQt и Qt Designer, с которыми мы сегодня познакомимся.

Обложка поста Python GUI: создаём простое приложение с PyQt и Qt Designer

Эта статья предназначена для тех, кто только начинает своё знакомство с созданием приложений с графическим интерфейсом (GUI) на Python. В ней мы рассмотрим основы использования PyQt в связке с Qt Designer. Шаг за шагом мы создадим простое Python GUI приложение, которое будет отображать содержимое выбранной директории.

Что нам потребуется

Нам понадобятся PyQt и Qt Designer, ну и Python, само собой.

В этой статье используется PyQt5 с Python 3, но особых различий между PyQt и PySide или их версиями для Python 2 нет.

Windows: PyQt можно скачать здесь. В комплекте с ним идёт Qt Designer.

macOS: Вы можете установить PyQt с помощью Homebrew:

$ brew install pyqt5

Скачать пакет с большинством компонентов и инструментов Qt, который содержит Qt Designer, можно по этой ссылке.

Linux: Всё нужное, вероятно, есть в репозиториях вашего дистрибутива. Qt Designer можно установить из Центра Приложений, но PyQt придётся устанавливать через терминал. Установить всё, что нам понадобится, одной командой можно, например, так:

# для Fedora: $ sudo dnf install python3-qt5 qt-creator # для Debian/Ubuntu: $ sudo apt install python3-qt5 pyqt5-dev-tools qtcreator 

После того как вы закончили с приготовлениями, откройте командную строку/терминал и убедитесь, что вы можете использовать команду pyuic5 . Вы должны увидеть следующее:

$ pyuic5 Error: one input ui-file must be specified 

Если вы видите сообщение, что такой команды нет или что-то в таком роде, попробуйте загуглить решение проблемы для вашей операционной системы и версии PyQt.

Если вы используете Windows, то, скорее всего, путь C:\Python36\Scripts (измените 36 на вашу версию Python) не прописан в вашем PATH . Загляните в этот тред на Stack Overflow, чтобы узнать, как решить проблему.

Дизайн

Основы

Теперь, когда у нас всё готово к работе, давайте начнём с простого дизайна.

Откройте Qt Designer, где вы увидите диалог новой формы, выберите Main Window и нажмите Create.

Python GUI: создаём простое приложение с PyQt и Qt Designer 1

После этого у вас должна появиться форма — шаблон для окна, размер которого можно менять и куда можно вставлять объекты из окна виджетов и т.д. Ознакомьтесь с интерфейсом, он довольно простой.

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

Все элементы формы и их иерархия по умолчанию отображаются в правой части окна Qt Designer под названием Object Inspector. Вы с лёгкостью можете удалять объекты, кликая по ним правой кнопкой мыши в этом окне. Или же вы можете выбрать их в основной форме и нажать клавишу DEL на клавиатуре.

Python GUI: создаём простое приложение с PyQt и Qt Designer 2

В итоге мы имеем почти пустую форму. Единственный оставшийся объект — centralwidget , но он нам понадобится, поэтому с ним мы ничего не будем делать.

Теперь перетащите куда-нибудь в основную форму List Widget (не List View) и Push Button из Widget Box.

Макеты

Вместо использования фиксированных позиций и размеров элементов в приложении лучше использовать макеты. Фиксированные позиции и размеры у вас будут выглядеть хорошо (пока вы не измените размер окна), но вы никогда не можете быть уверены, что всё будет точно так же на других машинах и/или операционных системах.

Макеты представляют собой контейнеры для виджетов, которые будут удерживать их на определённой позиции относительно других элементов. Поэтому при изменении размера окна размер виджетов тоже будет меняться.

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

Python GUI: создаём простое приложение с PyQt и Qt Designer 3

Теперь в меню Qt Designer нажмите Form, затем выберите Preview и увидите что-то похожее на скриншот выше. Выглядит хорошо, не так ли? Но вот что случится, когда мы изменим размер окна:

Python GUI: создаём простое приложение с PyQt и Qt Designer 4

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

Основное окно уже поддерживает макеты, поэтому нам ничего не нужно добавлять в нашу форму. Просто кликните правой кнопкой мыши по Main Window в Object Inspector и выберите Lay outLay out vertically. Также вы можете кликнуть правой кнопкой по пустой области в форме и выбрать те же опции:

Python GUI: создаём простое приложение с PyQt и Qt Designer 5

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

Так как мы использовали вертикальное размещение, все элементы, которые мы добавим, будут располагаться вертикально. Можно комбинировать размещения для получения желаемого результата. Например, горизонтальное размещение двух кнопок в вертикальном будет выглядеть так:

Python GUI: создаём простое приложение с PyQt и Qt Designer 6

Если у вас не получается переместить элемент в главном окне, вы можете сделать это в окне Object Inspector.

Последние штрихи

Теперь, благодаря вертикальному размещению, наши элементы выровнены правильно. Единственное, что осталось сделать (но не обязательно), — изменить имя элементов и их текст.

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

Свойства элементов можно изменить в разделе Property Editor.

Подсказка: вы можете менять размер, передвигать или добавлять часто используемые элементы в интерфейс Qt Designer для ускорения рабочего процесса. Вы можете добавлять скрытые/закрытые части интерфейса через пункт меню View.

Нажмите на кнопку, которую вы добавили в форму. Теперь в Property Editor вы должны видеть все свойства этого элемента. В данный момент нас интересуют objectName и text в разделе QAbstractButton . Вы можете сворачивать разделы в Property Editor нажатием по названию раздела.

Измените значение objectName на btnBrowse и text на Выберите папку.

Должно получиться так:

Python GUI: создаём простое приложение с PyQt и Qt Designer 7

Именем объекта списка является listWidget , что вполне подходит в данном случае.

Сохраните дизайн как design.ui в папке проекта.

Превращаем дизайн в код

Конечно, можно использовать .ui -файлы напрямую из Python-кода, однако есть и другой путь, который может показаться легче. Можно конвертировать код .ui -файла в Python-файл, который мы потом сможем импортировать и использовать. Для этого мы используем команду pyuic5 из терминала/командной строки.

Чтобы конвертировать .ui -файл в Python-файл с названием design.py , используйте следующую команду:

$ pyuic5 path/to/design.ui -o output/path/to/design.py 

Пишем код

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

Создайте файл main.py в папке, где находится design.py .

Используем дизайн

Для Python GUI приложения понадобятся следующие модули:

import sys # sys нужен для передачи argv в QApplication from PyQt5 import QtWidgets 

Также нам нужен код дизайна, который мы создали ранее, поэтому его мы тоже импортируем:

import design # Это наш конвертированный файл дизайна 

Так как файл с дизайном будет полностью перезаписываться каждый раз при изменении дизайна, мы не будем изменять его. Вместо этого мы создадим новый класс ExampleApp , который объединим с кодом дизайна для использования всех его функций:

class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow): def __init__(self): # Это здесь нужно для доступа к переменным, методам # и т.д. в файле design.py super().__init__() self.setupUi(self) # Это нужно для инициализации нашего дизайна 

В этом классе мы будем взаимодействовать с элементами интерфейса, добавлять соединения и всё остальное, что нам потребуется. Но для начала нам нужно инициализировать класс при запуске кода. С этим мы разберёмся в функции main() :

def main(): app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication window = ExampleApp() # Создаём объект класса ExampleApp window.show() # Показываем окно app.exec_() # и запускаем приложение 

И чтобы выполнить эту функцию, мы воспользуемся привычной конструкцией:

if __name__ == '__main__': # Если мы запускаем файл напрямую, а не импортируем main() # то запускаем функцию main() 

В итоге main.py выглядит таким образом:

import sys # sys нужен для передачи argv в QApplication from PyQt5 import QtWidgets import design # Это наш конвертированный файл дизайна class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow): def __init__(self): # Это здесь нужно для доступа к переменным, методам # и т.д. в файле design.py super().__init__() self.setupUi(self) # Это нужно для инициализации нашего дизайна def main(): app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication window = ExampleApp() # Создаём объект класса ExampleApp window.show() # Показываем окно app.exec_() # и запускаем приложение if __name__ == '__main__': # Если мы запускаем файл напрямую, а не импортируем main() # то запускаем функцию main() 

Если запустить этот код: $ python3 main.py , то наше приложение запустится!

Python GUI: создаём простое приложение с PyQt и Qt Designer 8

Но нажатие на кнопку ничего не даёт, поэтому нам придётся с этим разобраться.

Добавляем функциональность в наше Python GUI приложение

Примечание Весь дальнейший код пишется внутри класса ExampleApp .

Начнём с кнопки Выберите папку. Привязать к функции событие вроде нажатия на кнопку можно следующим образом:

self.btnBrowse.clicked.connect(self.browse_folder) 

Добавьте эту строку в метод __init__ класса ExampleApp , чтобы выполнить привязку при запуске приложения. А теперь взглянем на неё поближе:

  • self.btnBrowse : здесь btnBrowse — имя объекта, который мы определили в Qt Designer. self говорит само за себя и означает принадлежность к текущему классу;
  • clicked — событие, которое мы хотим привязать. У разных элементов разные события, например, у виджетов списка есть itemSelectionChanged и т.д.;
  • connect() — метод, который привязывает событие к вызову переданной функции;
  • self.browse_folder — просто функция (метод), которую мы описали в классе ExampleApp .

Для открытия диалога выбора папки мы можем использовать встроенный метод QtWidgets.QFileDialog.getExistingDirectory :

directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Выберите папку") 

Если пользователь выберет директорию, переменной directory присвоится абсолютный путь к выбранной директории, в противном случае она будет равна None . Чтобы не выполнять код дальше, если пользователь закроет диалог, мы используем команду if directory: .

Для отображения содержимого директории нам нужно импортировать os :

import os 

И получить список содержимого следующим образом:

os.listdir(path) 

Для добавления элементов в listWidget мы используем метод addItem() , а для удаления всех элементов у нас есть self.listWidget.clear() .

В итоге функция browse_folder должна выглядеть так:

def browse_folder(self): self.listWidget.clear() # На случай, если в списке уже есть элементы directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Выберите папку") # открыть диалог выбора директории и установить значение переменной # равной пути к выбранной директории if directory: # не продолжать выполнение, если пользователь не выбрал директорию for file_name in os.listdir(directory): # для каждого файла в директории self.listWidget.addItem(file_name) # добавить файл в listWidget 

Теперь, если запустить приложение, нажать на кнопку и выбрать директорию, мы увидим:

Python GUI: создаём простое приложение с PyQt и Qt Designer 9

Так выглядит весь код нашего Python GUI приложения:

import sys # sys нужен для передачи argv в QApplication import os # Отсюда нам понадобятся методы для отображения содержимого директорий from PyQt5 import QtWidgets import design # Это наш конвертированный файл дизайна class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow): def __init__(self): # Это здесь нужно для доступа к переменным, методам # и т.д. в файле design.py super().__init__() self.setupUi(self) # Это нужно для инициализации нашего дизайна self.btnBrowse.clicked.connect(self.browse_folder) # Выполнить функцию browse_folder # при нажатии кнопки def browse_folder(self): self.listWidget.clear() # На случай, если в списке уже есть элементы directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Выберите папку") # открыть диалог выбора директории и установить значение переменной # равной пути к выбранной директории if directory: # не продолжать выполнение, если пользователь не выбрал директорию for file_name in os.listdir(directory): # для каждого файла в директории self.listWidget.addItem(file_name) # добавить файл в listWidget def main(): app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication window = ExampleApp() # Создаём объект класса ExampleApp window.show() # Показываем окно app.exec_() # и запускаем приложение if __name__ == '__main__': # Если мы запускаем файл напрямую, а не импортируем main() # то запускаем функцию main() 

Это были основы использования Qt Designer и PyQt для разработки Python GUI приложения. Теперь вы можете спокойно изменять дизайн приложения и использовать команду pyuic5 без страха потерять написанный код.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *