This really gives you a über rapid app development environment. The power of Python combined with the awesomeness of the declarative language QML from the Qt framework.
Take a look and feel free to play with the example below:
from PySide import QtCore
from PySide import QtGui
from PySide import QtDeclarative
class Message(QtDeclarative.QDeclarativeItem):
messageChanged = QtCore.Signal()
def __init__(self, parent = None):
QtDeclarative.QDeclarativeItem.__init__(self, parent)
self._msg = u''
def getMessage(self):
return self._msg
def setMessage(self, value):
if self._msg != value:
print "Setting message property to", value
self._msg = value
self.messageChanged.emit()
else:
print "Message property already set to", value
message = QtCore.Property(unicode, getMessage, setMessage, notify=messageChanged)
def main():
app = QtGui.QApplication([])
QtDeclarative.qmlRegisterType(Message, "utils", 1, 0, "Message")
win = QtDeclarative.QDeclarativeView()
win.setSource("main.qml")
win.setWindowTitle("Hello World")
win.setResizeMode(QtDeclarative.QDeclarativeView.SizeRootObjectToView)
win.show()
app.exec_()
if __name__ == "__main__":
main()
import Qt 4.7 // or QtQuick 1.0 if applicable
import utils 1.0
Rectangle {
id: main
signal clicked
color: "black"
width: 360; height: 360
Message {
id: msg
message: "Click Me!"
onMessageChanged: label.font.pixelSize = 40
}
Text {
id: label
anchors.centerIn: parent
text: msg.message
color: "white"
font.pixelSize: 25
Behavior on font.pixelSize {
NumberAnimation { duration: 800; easing.type: Easing.OutBounce }
}
MouseArea {
anchors.fill: parent
onClicked: msg.message = "Hello World"
}
}
}
For more information point your browser to http://www.pyside.org and download the package for your OS.You'll also find useful information at http://developer.qt.nokia.com/wiki/Category:LanguageBindings::PySide
Happy hacking!