Есть ли учебник специально для PyQt5? [закрытый]


Я ищу учебник PyQt5. Это довольно сложно, чтобы начать разработку GUI с Python в первый раз без учебника.

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

может кто-нибудь предоставить учебник о том, как начать разработку GUI с PyQt5?

3 56

3 ответа:

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

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


стратегия

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

к счастью, кажется, у нас есть варианты:

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

  • QML: еще один кандидат на панацея: декларативные построения графического интерфейса с отформатированного JSON. Ням.

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

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

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

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

архитектура(с)

Model-View-Controller

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

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

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

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

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

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

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

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

как указал Катш в комментариях другого ответа,вот ссылка на пример кода для 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 / site-packages/PyQt5 / examples

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

взгляните на http://www.thehackeruniversity.com/2014/01/23/pyqt5-beginner-tutorial/ это новичок дружественный учебник