Подтвердить что ты не робот

Есть ли учебник специально для PyQt5?

Я ищу учебник PyQt5. Довольно сложно начать разработку графического интерфейса с помощью Python в первый раз без учебника.

До сих пор я нашел несколько учебных руководств PyQt4, и поскольку что-то изменилось с Qt4 на Qt5, например, факт SIGNAL и SLOT больше не поддерживается в Qt5, было бы неплохо иметь специальные руководства для PyQt5.

Может кто-нибудь, пожалуйста, предоставит учебник о том, как запустить разработку графического интерфейса с помощью PyQt5?

4b9b3361

Ответ 1

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

Сказав это, я сейчас беру "грубый черновик" с быстрым вступлением в PyQt5. Я также расскажу о полезных ресурсах. Я новичок в этой структуре, и я расскажу о том, как я считаю хорошей стратегией ее использования, поскольку я полагаю, что эта стратегия. Есть, вероятно, другие хорошие стратегии, поэтому, если у кого-то есть что добавить, пожалуйста, оставьте комментарий. Это очень большая работа.


Стратегия

Я многому научился из кода примера, как это было предложено в другом ответе, но что-то, чему не помогают примеры, - это глубокая магия PyQt5. Рамки с большим количеством магии в них (PyQt5, Django, SQLAlchemy,...) великолепны, потому что огромное количество тяжелой работы отвлекается от вас. С другой стороны, не всегда ясно, что, черт возьми, происходит, или то, что вы должны делать с этим.

К счастью, похоже, у нас есть варианты:

  • QtDesigner: В те дни, когда ваша клавиатура загорается, в установочном пакете вызывается графический GUI-Builder. Когда вы увидите код, который он производит (возможно, только в версии сообщества?), Вы поймете, почему это может быть не панацея, которая кажется.

  • QML: Еще один кандидат на панацею: декларативное графическое здание из форматированного JSON. Yum.

  • Qt Quick: основа для QML. К этому моменту это может казаться мучительно легким, но пока этого не нужно втягивать. Кажется, это сводится к изучению этого вручную.

  • Модель-представление Framework (1): Model-View (не MVC) отделяет код, который имеет дело с презентацией/взаимодействие с кодом, управляющим данными, с целью обеспечения модульности.

Кодирование в PyQt5 значительно упрощается с помощью набора классов, реализующих шаблон проектирования Model-View. Model-View - это эволюция Model-View-Controller (MVC), в которой контроллер воссоединился с представлением. Они кажутся странными друзьями, но большая часть программной логики связана либо с пользователем, либо с данными: он, кажется, имеет определенный смысл, по крайней мере, на уровне стратосферы.

От глаз птицы:

Архитектура (ы)

Model-View-Controller

Этот широко используемый шаблон дизайна разделяет приложение на 3 слоя:

  • Модель ~ > Инкапсулирует данные. Уведомляет View и Controller о любых изменениях базовых данных. Это приводит к обновлению отображения выходных или доступных команд, соответственно.
  • Просмотр ~ > Отображает соответствующий вывод модели для пользователя.
  • Контроллер ~ > Инкапсулирует взаимодействие с пользователем и уведомляет модель и представление соответствующих событий.

Model-View

  • Графическая среда представления (1) ~ > Представляет все (включая встроенные QWidgets и т.д.) внутри QGraphicsScene как QGraphicsItem (или его производных), включая прокси-классы для встраивания виджетов. Элементы предположительно сильно оптимизированы, а интеграция поддержки OpenGL - однострочный, что приятно.

Этот шаблон дизайна помещает контроллер в представление. Таким образом, представление способно полностью обрабатывать взаимодействие пользователя. В конкретных терминах это механизмы сигналов и слотов.

Управление взаимодействием с пользователем

Обратные вызовы

Сигналы и слоты

..... ** Извините, но я должен подписать сейчас. Я вернусь, чтобы продолжить добавлять к этому. **

Практический пример (ы)

Как, например, вы можете взять древовидное представление из примера itemviews/editabletreemodel, а затем поменять местами в модели файловой системы (QFileSystemModel) из примера itemviews/dirview, и у вас есть полное (рабочее) представление дерева вашего каталога. Довольно унылый.

Итак, вы бы взяли код из примера editabletreemodel:

headers = ("Title", "Description")

file = QFile(':/default.txt')
file.open(QIODevice.ReadOnly)
model = TreeModel(headers, file.readAll())
file.close()

self.view.setModel(model)

... и свопинг в модели из dirview:

model = QFileSystemModel()
model.setRootPath('')
self.view.setModel(model)

... и он просто работает. Удивительно.

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

Ресурсы

Вот некоторые драгоценные камни, которые я нашел в своих путешествиях. Надеюсь, они помогут вам.

Это учебник по Model-View для Qt5. (1) Это очень подробный документ из официальных документов Qt5. Много полезной документации можно найти на сайте Qt5. Имейте в виду, что это для Qt5 (библиотека С++), но разница тривиальна для чтения (и официальные документы PyQt5 указывают там все равно).

В этом PDF-документе представлен быстрый высокоуровневый подход к структуре Model-View PyQt4. Обратите внимание, что это для PyQt4 (не PyQt5), но на самом деле это для Python ( в отличие от С++), и я очень быстро научил меня.

Я только начинаю играть с графическим представлением и нахожу этот учебник по графическому представлению Framework очень полезным. Это тот же вид, который используется в примере кода qtdemo для генерации некоторых эффектов скольжения. Я немного обновлю это.

Это полный список всех модулей Qt5.

Это полный список всех классов Qt5.

Это полный список всех функций API Qt5.

Как сказал katsh в другом ответе на ответ, вот ссылка на пример кода для PyQt5.2.1 на GitHub

Кроме того, копия кода примера поставляется в комплекте с вашим дистрибутивом и может быть найдена по адресу:

%PYTHON_HOME%\Lib\site-packages\PyQt5\examples

Если вы используете PyDev (Eclipse), вы можете запускать примеры, просто щелкнув правой кнопкой мыши пример основного файла модуля в PyDev Package Explorer или Navigator =: > Run As =: > Python Run

Лучший из моих (не очень) скромных мнений:

%PYTHON_HOME%\Lib\site-packages\PyQt5\examples\qtdemo\qtdemo.py

Среди моих текущих проектов я в этом процессе обратного проектирования. Если вы это проверите, вы поймете, почему. Продолжение следует.;)

Наслаждайтесь!

Ответ 2

В течение некоторого времени искали учебники PyQt5? Не смотрите дальше! Вы не найдете много в Интернете.

Не совсем учебники, но довольно простые пояснительные базовые сценарии по следующему пути:

/python/lib/site-packages/PyQt5/examples

вы найдете примеры 100 в папках 30 от новичка до продвинутого, охватывая основные окна, меню, вкладки, макеты, сеть, OpenGL и т.д.