Ich schreibe eine Anwendung in
python3.12 auf
Ubuntu mit
pyside6.9 und
qml . Subklassifter QquickItem und verwendet die Funktion
updatePaintNode , um das Gemälde zu erledigen.
Code: Select all
## 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
Es hat mit dem QSGSimPlerectnode als zurückgegebener Knoten aus der Funktion hervorragend funktioniert. es könnte in englischer Sprache etwas anders sein). < /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>
Ich konnte kein
Problem in meinem Code finden und es wird ohne Fehler ausgeführt (außer dem Speicherfehler manchmal). Alle anderen Skripte (QML, Python) habe ich nicht geändert. Typen.>
Ich schreibe eine Anwendung in [b] python3.12 [/b] auf [b] Ubuntu [/b] mit [b] pyside6.9 [/b] und [b] qml [/b]. Subklassifter QquickItem und verwendet die Funktion [b] updatePaintNode [/b], um das Gemälde zu erledigen.
[code]## 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
[/code]
Es hat mit dem QSGSimPlerectnode als zurückgegebener Knoten aus der Funktion hervorragend funktioniert. es könnte in englischer Sprache etwas anders sein). < /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>
Ich konnte kein [url=viewtopic.php?t=26065]Problem[/url] in meinem Code finden und es wird ohne Fehler ausgeführt (außer dem Speicherfehler manchmal). Alle anderen Skripte (QML, Python) habe ich nicht geändert. Typen.>