我正在尝试将数据从 QML 发送到 Python,但出现错误。
测试.py:
#!/usr/bin/env python
import sys
from PySide import QtCore, QtGui, QtDeclarative
class Test( QtCore.QObject ):
def __init__( self ):
QtCore.QObject.__init__(self)
@QtCore.Slot()
def printText(self,text):
print text
class MainWindow( QtDeclarative.QDeclarativeView ):
def __init__( self, parent=None ):
super( MainWindow, self ).__init__( parent )
self.setWindowTitle( "Test" )
self.setSource( QtCore.QUrl.fromLocalFile( './test.qml' ) )
self.setResizeMode( QtDeclarative.QDeclarativeView.SizeRootObjectToView )
app = QtGui.QApplication( sys.argv )
window = MainWindow()
context = window.rootContext()
context.setContextProperty("testModel",Test())
window.show()
sys.exit( app.exec_() )
测试.qml:
import QtQuick 1.0
Rectangle {
width: 200
height: 200
color: "white"
Rectangle {
anchors.centerIn: parent
width: 100
height: 50
color: "black"
Text {
anchors.centerIn: parent
text: "click"
color: "white"
}
MouseArea {
anchors.fill: parent
onClicked: {
testModel.printText("test")
}
}
}
}
单击按钮时,我希望它打印“测试”,但我收到此错误:
TypeError: printText() 正好需要 2 个参数(给定 1 个)
我错过了什么?
编辑:将示例更改为更简单的示例。