Есть ли учебник специально для PyQt5? [закрытый]
Я ищу учебник PyQt5. Это довольно сложно, чтобы начать разработку GUI с Python в первый раз без учебника.
Я только нашел некоторые учебники PyQt4 до сих пор, и так как что-то изменилось с Qt4 на Qt5, например, факт SIGNAL
и SLOT
больше не поддерживаются в Qt5, было бы неплохо иметь конкретные учебники для PyQt5.
может кто-нибудь предоставить учебник о том, как начать разработку GUI с PyQt5?
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 слоя:
- модель ~> инкапсулирует данные. Уведомляет представление и контроллер о любых изменениях в базовых данных. Это приводит к обновлениям отображения выходных данных или доступных команды, соответственно.
- View ~> отображает соответствующие выходные данные модели для пользователя.
- контроллер ~> инкапсулирует взаимодействие с пользователем, и информирует модель и представление о соответствующих мероприятиях.
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/ это новичок дружественный учебник