[PyQt] help with dip and PyQt4 widgets

Darren Dale dsdale24 at gmail.com
Fri Jul 8 17:58:02 BST 2011


http://www.riverbankcomputing.co.uk/static/Docs/dip/model_tutorial.html#models-and-init
:

The handling of the initial values of attributes is performed by the
meta-class of the Model class. This is done before the model’s
__init__() method (if there is one) is called.


On Fri, Jul 8, 2011 at 12:20 PM, Lic. José M. Rodriguez Bacallao
<jmrbcu at gmail.com> wrote:
> I tried that before and still getting the same error. I thinks is
> something like the C++ part of the widget is not created at the time
> when the properties methods are called to set my initial values as
> this  happen before __init__ is called.
>
> On Fri, Jul 8, 2011 at 12:05 PM, Demetrius Cassidy <dcassidy36 at gmail.com> wrote:
>> You need to call QToolButton's __init__() method.
>>
>> class Indicator(QtGui.QToolButton, Model):
>>     def __init__(self)
>>        super(Indicator, self).__init__()
>> On Fri, Jul 8, 2011 at 1:49 PM, Lic. José M. Rodriguez Bacallao
>> <jmrbcu at gmail.com> wrote:
>>>
>>> hi folks, I am creating a composite widget with PyQt4 and Dip, the
>>> problem I have is that when I use dip properties for setting PyQt4
>>> properties in the constructor I am getting an error saying that the
>>> underlying C++ object has been delete, I think this is due to the way
>>> dip works because it call properties methods before the actual Qt4
>>> widget as been created when I pass an initial value in the
>>> constructor. When I construct the object with properties initial
>>> values and the use the properties accesors to set the value, this
>>> doens't happen. So, my question is, which is the right way to
>>> construct a custom composite widget with dip?
>>>
>>> # dip imports
>>> from dip.model import Model, Instance, Str
>>>
>>> # PyQt4 imports
>>> from PyQt4 import QtCore, QtGui
>>>
>>> class Indicator(QtGui.QToolButton, Model):
>>>
>>>    # the indicator identifier, it must be unique for all indicators
>>>    id = Str()
>>>
>>>    # the indicator text, this text will be shown
>>>    # beside the icon if one is defined
>>>    text = Str()
>>>
>>>    # the indicator tooltip
>>>    tooltip = Str()
>>>
>>>    # the indicator icon
>>>    icon = Instance(QtGui.QIcon)
>>>
>>>    @id.getter
>>>    def id(self):
>>>        print 'getting value'
>>>        return self.objectName()
>>>
>>>    @id.setter
>>>    def id(self, id):
>>>        print 'setting value'
>>>        self.setObjectName(id)
>>>
>>>    @text.getter
>>>    def text(self):
>>>        return self.text()
>>>
>>>    @text.setter
>>>    def text(self, text):
>>>        self.setText(text)
>>>
>>>    @tooltip.getter
>>>    def tooltip(self):
>>>        return self.toolTip()
>>>
>>>    @tooltip.setter
>>>    def tooltip(self, tooltip):
>>>        self.setToolTip(tooltip)
>>>
>>>    @icon.getter
>>>    def icon(self):
>>>        return self.icon()
>>>
>>>    @icon.setter
>>>    def icon(self, icon):
>>>        self.icon = icon
>>>
>>>    def perform(self):
>>>        raise NotImplementedError
>>>
>>> if __name__ == '__main__':
>>>    app = QtGui.QApplication([])
>>>
>>>    i = Indicator(text='xxx')
>>>    i.show()
>>>
>>>    app.exec_()
>>>
>>> --
>>> Lic. José M. Rodriguez Bacallao
>>> Centro de Biofisica Medica
>>> -----------------------------------------------------------------
>>> Todos somos muy ignorantes, lo que ocurre es que no todos ignoramos lo
>>> mismo.
>>>
>>> Recuerda: El arca de Noe fue construida por aficionados, el titanic
>>> por profesionales
>>> -----------------------------------------------------------------
>>> _______________________________________________
>>> PyQt mailing list    PyQt at riverbankcomputing.com
>>> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>>
>
>
>
> --
> Lic. José M. Rodriguez Bacallao
> Centro de Biofisica Medica
> -----------------------------------------------------------------
> Todos somos muy ignorantes, lo que ocurre es que no todos ignoramos lo mismo.
>
> Recuerda: El arca de Noe fue construida por aficionados, el titanic
> por profesionales
> -----------------------------------------------------------------
> _______________________________________________
> PyQt mailing list    PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt


More information about the PyQt mailing list