我正在尝试将数据从QML发送到
Python,但我收到了一个错误.
test.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_() )
test.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() takes exactly 2 arguments (1 given)
我错过了什么?
编辑:将示例更改为更简单的示例.