[PyQt] Custom widgets, dynamic properties and css
Mark Summerfield
mark at qtrac.eu
Tue Nov 20 13:47:35 GMT 2007
On 2007-11-20, Richard Smith wrote:
> Hi Guys,
>
> I've created a custom widget for an application I'm building.
>
> The widget is a simple frame with 2 labels inside it.
>
> Basically, I need the frame style to change dependant on a property of
> the custom widget. I've set the property using .setProperty() method,
> and the initial style of the widget is fine.
>
> For each state of the property, the widget has a style.
>
> However, as the application progresses through it's run, the custom
> property changes as to the state, however the style doesn't change.
>
> I have a couple of methods that are used to change the state and I am
> calling update() after the change, but the style still doesn't change.
I think for styles you must call setStyle() rather than update() to
apply a new (or modified) style.
>
> The important bits of the widget are:
>
> class QuickStatus(QtGui.QFrame):
> def __init__(self, parent=None):
> QtGui.QWidget.__init__(self, parent)
> ## { ... snip ... }
>
> def getState(self):
> return int(self.property("state").toString())
>
> def setState(self, state):
> if state in STATES:
> self.setProperty( "state",
> QtCore.QVariant(state))
> self.update()
>
> Then for each of the various states I've got the following styles:
>
> QuickStatus[state="1"]
> {
> background-color: #CCFF99;
> border: 1px solid green;
> }
>
> Anyone have any hints as to why the style of the control isn't being
> updated as the state changes? Am I missing something crucial?
--
Mark Summerfield, Qtrac Ltd., www.qtrac.eu
More information about the PyQt
mailing list