我正在编写我的应用程序基础工作,我正在使用pyside来开发应用程序。 我唯一的打嗝是让qml开关激活。 目前我在qml文件中:
signal buttonClicked;
//function start(){text.text="started";buttonClicked()}
Switch {
id:switchComponent
anchors.verticalCenterarent.verticalCenter;
anchors.horizontalCenterarent.horizontalCenter;
}
//end of switch
Text {
id:text
color:"red"
anchors.bottom: switchComponent.top
anchors.horizontalCenter: switchComponent.horizontalCenter
//text: switchComponent.checked ? "GROUNDWORK ON" & start() : "Press to Start"
//text: switchComponent.checked ? "GROUNDWORK ON" && start() : "Press to Start"
text: switchComponent.checked ? start() : "Press to Start"
font.pixelSize: 30
smooth:true
}
当应用程序启动时,按下开启的组件会将信号发送到python,并且连接到信号的功能会启动,但开关永远不会变为蓝色,文本也不会变为“已启动”。您知道应用程序运行的唯一方法是,在大约10秒后,系统将要求您关闭应用程序。如果您按NO,那么该应用程序将正常工作。
有谁知道为什么会这样?我基本上只是希望在python函数开始运行之前激活开关和文本,以便用户知道发生了什么。 编辑:可以在这里找到完整的qml文件.https://projects.developer.nokia.com/airplay/browser/groundwork/qml/main.qml我认为这只是使用带有qml的pyside的一部分ui线程处理python函数时阻塞。
答案 0 :(得分:0)
我对你的代码感到有点困惑(并且缺少Switch)所以我只能猜测。
在Text组件中调用start()似乎对我不对。它应该只是
Text {
...
text: switchComponent.checked ? "GROUNDWORK ON" : "Press to Start"
}
不再需要明确设置文本,并且开关必须触发组件的信号。
Switch {
onCheckedChanged: {
if (checked) {
buttonClicked()
}
}
}
这只是猜测我对你的代码的理解。