एक पाइथन विधि/स्लॉट एक क्यूएमएल सिग्नल से कैसे जोड़ा जा सकता है? ऐसा लगता है कि QQObject.connect() को PyQt4 में काम करने के लिए उपयोग किया जाता है लेकिन यह no longer available in PyQt5 है।PyQt5 QML सिग्नल पाइथन स्लॉट के लिए?
#Sample QML File (stack.qml)
import QtQuick 2.0
Rectangle {
MouseArea {
anchors.fill: parent
onClicked: {
// relay this to python
}
}
}
-
#Sample Python File
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQuick import QQuickView
if __name__ == '__main__':
import os
import sys
app = QGuiApplication(sys.argv)
view = QQuickView()
view.setWidth(500)
view.setHeight(500)
view.setTitle('Hello PyQt')
view.setResizeMode(QQuickView.SizeRootObjectToView)
view.setSource(QUrl.fromLocalFile(os.path.join(os.path.dirname(__file__),'stack.qml')))
def on_qml_mouse_clicked(mouse_event):
print 'mouse clicked'
view.show()
qml_rectangle = view.rootObject()
# this technique doesn't work #############################
qml_rectangle.mousePressEvent.connect(on_qml_mouse_clicked)
sys.exit(app.exec_())
PyQT उदाहरणों में से कुछ "setContextProperty" के माध्यम से QML संदर्भ में एक वस्तु पारित और उसके बाद उस वस्तु पर स्लॉट के लिए QML घटनाओं रिले लेकिन यह दृष्टिकोण गोल चक्कर लगता है। क्या कोई बेहतर तरीका है?
अच्छा काम करता है में अधिक जानकारी प्राप्त कर सकते हैं! धन्यवाद! – berg