[PyQt] help with dip and PyQt4 widgets

Darren Dale dsdale24 at gmail.com
Fri Jul 8 18:13:26 BST 2011


Have you considered trying to decouple your model and view, as
described throughout the documentation?

On Fri, Jul 8, 2011 at 1:04 PM, Lic. José M. Rodriguez Bacallao
<jmrbcu at gmail.com> wrote:
> yes, I know, I read that in the docs, but, how to do something similar
> to what I want to achieve?
>
> 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
>> -----------------------------------------------------------------
>>
>
>
>
> --
> 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