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

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

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

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

3 Solutions collect form web for “Есть ли учебник специально для PyQt5?”

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

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


стратегия

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

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

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

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

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

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

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

С высоты птичьего полета:

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

Model-View-Controller

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

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

Model-View

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

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

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

Callbacks

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

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

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

Например, вы можете взять древовидное представление из 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 (библиотека C ++), но разница тривиальна для чтения (и официальные документы PyQt5 указывают там все равно).

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

Я только начинаю играть с графическим представлением, и я нахожу этот урок в Graphics View Framework очень полезным. Это тот же вид, который используется в примере кода qtdemo для генерации некоторых эффектов 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 

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

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

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

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

/ Python / Lib / сайт-пакеты / PyQt5 / примеры

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

Взгляните на http://www.thehackeruniversity.com/2014/01/23/pyqt5-beginner-tutorial/. Это пособие для новичков

Interesting Posts

Объедините два списка, один как ключи, один как значения, в dict в Python

Создайте кадр данных Pandas со счетчиками элементов, охватывающих диапазон дат

Сценарий Python для минимизации CSS?

Установить атрибут Element в Python

Сколько одновременных запросов получает один процесс в колбе?

Каков предпочтительный метод использования jinja2 в App Engine?

отслеживание курсора с использованием matplotlib и doublex

Ошибка SSL InsecurePlatform при использовании пакета запросов

Приложение Python / Kivy работает только один раз

Как получить исходные переменные после запуска Scikit Model с использованием метода OneHotEncoding

Создание точки соединения NTFS в Python

Как прокомментировать элемент XML (с использованием реализации мини-DOM)

сообщение на страницу для входа в систему с помощью красивого супа

Почему list.remove () не ведет себя так, как можно было бы ожидать?

Запуск скрипта python для заданного пользователем времени?

Python - лучший язык программирования в мире.