[PyQt] help with dip and PyQt4 widgets

Darren Dale dsdale24 at gmail.com
Fri Jul 8 18:24:33 BST 2011


Have you seen the discussion at
http://www.riverbankcomputing.co.uk/static/Docs/dip/ui_tutorial.html#creating-views-programmatically
, or http://www.riverbankcomputing.co.uk/static/Docs/dip/ui_tutorial.html#creating-views-with-qt-designer
?

On Fri, Jul 8, 2011 at 1:19 PM, Lic. José M. Rodriguez Bacallao
<jmrbcu at gmail.com> wrote:
> but the view will need to be pure pyqt, not dip?
>
> On Fri, Jul 8, 2011 at 1:13 PM, Darren Dale <dsdale24 at gmail.com> wrote:
>> 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
>>
>
>
>
> --
> 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
> -----------------------------------------------------------------
>


More information about the PyQt mailing list