3
votes

I'm trying to use Python, PySide and a sample QML file to make a simple ui. How can I set the "value" property available in the QML control from my Python app? As of now, the "SpeedDial" show up, but can't figure out how to change it's value.

Python file:

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtDeclarative import QDeclarativeView

# Create Qt application and the QDeclarative view
app = QApplication(sys.argv)
view = QDeclarativeView()
# Create an URL to the QML file
url = QUrl('SpeedDial.qml')

# Set the QML file and show
view.setSource(url)
view.show()
# Enter Qt main loop
sys.exit(app.exec_())

The qml file:

import QtQuick 1.0

Item  {
id: root1
property real value : 0

width: 300; height: 300

Image  { id: speed_inactive; x: -9; y: 8; opacity: 0.8; z: 3; source: "pics/speed_inactive.png"

}
Image  {
    id: needle
    x: 136; y: 86
    clip: true
    opacity: root1.opacity
    z: 3
    smooth: true
    source: "pics/needle.png"
    transform: Rotation  {
        id: needleRotation
        origin.x: 5; origin.y: 65
        angle: Math.min(Math.max(-130, root1.value*2.6 - 130), 133)

        Behavior on angle  {
            SpringAnimation  {
                spring: 1.4
                damping: .15
            }
        }
    }
}
}
1

1 Answers

0
votes

You're not supposed to control QML properties directly from Python or C++.

Define a Python class that will represent a car with a property speed. Instantiate it in QML like that:

Car {
    id: car
}

and then use its speed:

angle: car.speed