[PyQt] help with dip and PyQt4 widgets

Demetrius Cassidy dcassidy36 at gmail.com
Fri Jul 8 17:05:25 BST 2011


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20110708/99958c53/attachment.html>


More information about the PyQt mailing list