Dai*_*vid 5 python qt pyqt qml qt-quick
如何将我在.qml脚本中创建的按钮绑定到python PyQt5代码?
示例:python:
import sys
from PyQt5.QtCore import QObject, QUrl, Qt
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQml import QQmlApplicationEngine
if __name__ == "__main__":
app = QApplication(sys.argv)
engine = QQmlApplicationEngine()
ctx = engine.rootContext()
ctx.setContextProperty("main", engine)
engine.load('test.qml')
win = engine.rootObjects()[0]
win.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
QML:
import QtQuick 2.2
import QtQuick.Window 2.1
import QtQuick.Controls 1.2
import QtQuick.Dialogs 1.1
ApplicationWindow {
title: qsTr("Test Invoke")
width: 200
height: 100
Button{
y : 70
text : "About"
onClicked: {
print('Hello')
}
}
}
Run Code Online (Sandbox Code Playgroud)
单击按钮时如何使用Python执行某些操作?另外:是否有人拥有良好的示例或文档资源.关于pyqt + qml(快速qt)?
如果您为按钮命名,则可以连接到其 onClick 信号,或连接到它在 中发出的自定义信号onClicked。例子:
ApplicationWindow {
title: qsTr("Test Invoke")
width: 200
height: 100
Button {
signal messageRequired
objectName: "myButton"
y : 70
text : "About"
onClicked: messageRequired()
}
}
Run Code Online (Sandbox Code Playgroud)
请注意 Button 中的信号和 objectName 属性。那么之前的Python代码exec可以是这样的:
def myFunction():
print 'handler called'
button = win.findChild(QObject, "myButton")
button.messageRequired.connect(myFunction)
button.clicked.connect(myFunction) # works too
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的按钮中,onClicked仅发出messageRequired信号,因此最好删除自定义信号并clicked直接连接。当您单击按钮时,两个onClicked()以及连接到的任何插槽clicked都会被调用。
| 归档时间: |
|
| 查看次数: |
7298 次 |
| 最近记录: |