Làm cách nào để có thể kết nối phương thức/khe trăn với tín hiệu QML? Có vẻ như QtObject.connect() được sử dụng để làm việc trong PyQt4 nhưng nó là no longer available in PyQt5.PyQt5 Tín hiệu QML cho Khe cắm Python?
#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_())
Một số ví dụ pyQT vượt qua một đối tượng vào bối cảnh QML qua "setContextProperty" và sau đó chuyển tiếp QML sự kiện để khe về đối tượng đó nhưng cách tiếp cận mà dường như vòng xoay. Có cách nào tốt hơn?
hoạt động tuyệt vời! cảm ơn bạn! – berg