[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