Pyside6-qtquick qsggeometrynode, используемый в qquickitem.updatepaintnode, не виден, а иногда вызывает сбойPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pyside6-qtquick qsggeometrynode, используемый в qquickitem.updatepaintnode, не виден, а иногда вызывает сбой

Сообщение Anonymous »

Я пишу приложение в python3.12 на ubuntu , используя pyside6.9 и qml .
я пытался создать собственный qquickitem в python как QMlelement для использования в QMlem. Qquickitem и использовал функцию updatePaintNode , чтобы сделать картину.

Код: Выделить всё

## working example

# imports

QML_IMPORT_NAME = "Instance2D"
QML_IMPORT_MAJOR_VERSION = 1

@QmlElement
class Instance2D(QQuickItem):

itemChanged = Signal(QObject, name="itemChanged")

def __init__(self, parent=None):
super().__init__(parent)

self.setFlag(QQuickItem.Flag.ItemHasContents, True) # to enable calls of updatePaintNode

def updatePaintNode(self, node: QSGNode, upd):
if node is None:
node = QSGSimpleRectNode()
node.setColor(Qt.GlobalColor.green)

node.setRect(QRectF(25, 25, 200, 500))

return node
Он отлично работал с qsgsimplerectnode в качестве возвращаемого узла из функции.
, но при использовании qsggeometrynode ничего не видно, даже если QML правильно работает или иногда все программное сообщение, я получаю (я получаю ошибку. Это может быть немного отличаться на английском языке). < /p>
## Not working example

...
def updatePaintNode(self, node: QSGNode, upd):
if node is None:
geometry = QSGGeometry(QSGGeometry.defaultAttributes_Point2D(), 3)
geometry.setDrawingMode(QSGGeometry.DrawingMode.DrawTriangles)
geometry.allocate(3) # Don't know if this is needed

material = QSGFlatColorMaterial()
material.setColor(QColor(100, 255, 0))

node = QSGGeometryNode()
node.setGeometry(geometry)
node.setMaterial(material)
node.setFlag(QSGNode.Flag.OwnsGeometry, True)
node.setFlag(QSGNode.Flag.OwnsMaterial, True)

vertices = geometry.vertexDataAsPoint2D()

vertices[0].set(50, 50)
vertices[1].set(100, 50)
vertices[2].set(75, 120)

# node.markDirty(QSGGeometryNode.DirtyStateBit.DirtyGeometry) # Did not help

return node
< /code>
Я не мог найти проблему в своем коде, и он работает без ошибок (кроме ошибки памяти иногда). Все остальные сценарии (QML, Python) я не изменился. Типы.
Большое спасибо, уже много
maleydo

Подробнее здесь: https://stackoverflow.com/questions/797 ... -visible-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»