交互的办法有很多种,由于主要界面功能都是有QML来实现,Python只是作为辅助提供部分功能。 于是和浏览器中js与python交互方式类似,提供一个Python对象给QML访问。
- 通过
engine.rootContext().setContextProperty('_Window', w)
注册提供一个Python对象 - Python对象中被访问的方法前面使用装饰器
@pyqtSlot
,比如:@pyqtSlot(int)
或者@pyqtSlot(str, result=str) # 可以获取返回值
。 - QML中的信号或者Python对象中的信号都可以互相绑定对方的槽函数
Component.onCompleted: {
// 绑定信号槽到python中的函数
valueChanged.connect(_Window.onValueChanged)
// 绑定python中的信号到qml中的函数
_Window.timerSignal.connect(appendText)
}