Есть ли простой способ рисовать сложные вещи с помощью QPainterPath или использовать аналогичные вещи в PyQt?

Я сейчас изучаю PyQt и особенно QGraphicsScene. Прямо сейчас я пытаюсь нарисовать некоторые сложные вещи, например, «человеческую руку», но я нахожу QPainterPath немного сложным. Что можете посоветовать? Может быть, используя какой-нибудь openGL или какой-нибудь фото импорт изображений? Я также немного беспокоюсь о скорости, я был бы признателен за ответы, которые учитывают этот фактор. Приведу пример рисунка, которого хочу добиться. Спасибо

Есть ли простой способ рисовать сложные вещи с помощью QPainterPath или использовать аналогичные вещи в PyQt?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите реализовать сложные вещи, создайте образ, так как вы сэкономите время.

from PySide2 import QtCore, QtGui, QtWidgets

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    scene = QtWidgets.QGraphicsScene(backgroundBrush=QtCore.Qt.gray)
    w = QtWidgets.QGraphicsView(scene)
    pixmap = QtGui.QPixmap("hand128.png")
    pixmap_item = QtWidgets.QGraphicsPixmapItem(pixmap)
    pixmap_item.setFlags(
        pixmap_item.flags()
        | QtWidgets.QGraphicsItem.ItemIsSelectable
        | QtWidgets.QGraphicsItem.ItemIsMovable
    )
    scene.addItem(pixmap_item)
    w.show()
    sys.exit(app.exec_())

Спасибо, мой спаситель в PyQt :) Как вы думаете, это хорошая практика (скорость) в долгосрочной перспективе? Особенно, если в будущем вы собираетесь делать из него что-то вроде пуговиц? Так как мне еще понадобится нажатое состояние и т.д. Я думал еще и о картинках, но если у меня будет 50 кнопок в одном UI, то будет уже 100 картинок.

Vlad 10.04.2019 03:08

@Vlad В том, что вам нужно выбирать между памятью или скоростью, если это быстро, мой вариант правильный, так как задача «создания образа» не будет выполнена, но, в свою очередь, вам придется загрузить 100 изображений в оперативную память, но если вы хотите сохранить память, вам придется сделать картину онлайн, что предполагает время «создания изображения», но для 100 изображений я не вижу разницы. В конце концов, последний вариант зависит от тестов, которые вы делаете.

eyllanesc 10.04.2019 03:17

Другие вопросы по теме