[PySide] combining two default widgets

Aaron Richiger a.richi at bluewin.ch
Sun Oct 20 11:13:42 CEST 2013


Hello Frank!

Tried your code and it works fine (BTW: if you want to check us some 
code, it would be nice if the code is executable and shows a working 
example of your widget, otherwise all of us first have to write some 
lines of code to show your widget and chances are smaller that anybody 
tries it at all...).

There are no general guidelines about multiple inheritance, it's an 
endless discussion whether it's a good or a bad thing... I can just give 
you my guidelines, others will contradict:-)

- in your case, it's definitively the wrong choice (see below)
- use it wisely and rarely (I've only used it in two cases in my entire 
Python life...)
- learn about the internals (e.g. how conflicting function names are 
resolved, etc.)

Reason, why it's definitively not a good idea here: You wanted a mix of 
both looks and feels. The visual appearance should be somewhere between 
a combobox and a progress bar. So you want e.g. the paintEvent() of both 
classes to be executed. But since QComboBox is first in the inheritance 
order, only QComboBox.paintEvent() would be executed, your widget would 
never look like a progress bar. And this is just one example of 
conflicting methods.
Implementing your own widget starting from QComboBox or from 
QProgressBar as you did now is the way I would choose.

Cheers!
Aaron




Am 20.10.2013 07:37, schrieb Frank Rueter | OHUfx:
> Hi all,
>
> I have written a custom comboBox which renders like a progress bar.
> Depending on which item is chosen, the progress bar is updated accordingly:
> http://pastebin.com/yWACCHH0)
>
> Initially I thought I'd be cheeky and try to inherit both QComboBox and
> QProgessBar (in that order) to see if this is the easiest way to do
> this, but the app crashed as soon as I used self.setItems() in the
> constructor.
>
> I don't have a lot of experience with inheriting more than one object,
> so thought I'd ask you guys for general guide lines (if there are any).
> I'd imagine it's only safe to do if you know that none of the respective
> attributes cause conflicts?!
>
>
> Also, is the above code an ok way of doing this? I would just like to
> know if this is how the pros would do it and avoid bad habits.
>
> Cheers,
> frank
>
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside




More information about the PySide mailing list