Qt, multiple inheritance: QApplication and new-style class not possible

Discussion in 'Python' started by Sibylle Koczian, May 12, 2004.

  1. I want to try out several applications, all doing the same thing but
    using different GUI libraries (Tkinter, Qt, wxWindows). Using an example
    I found in a book I wrote a class containing the GUI independent methods
    of the application, let's call it MyAppClass. The book is written before
    Python 2.2, so it uses classic classes, but I want some properties, so I
    made MyAppClass a new style class.

    For the Tkinter GUI I derive another class, TkAppClass, from this, whose
    methods use Tkinter. As Qt applications need an application class
    derived from QApplication, I wanted to derive my QAppClass from both
    classes, QApplication and MyAppClass, but got a TypeError: "cannot
    create a class derived from a SIP generated class (QApplication) and a
    new-style class - use SIP v4 or later instead".

    Now I see three different ways out of this:

    a) use SIP v4, but it's pre-release. Moreover I'm just starting with
    Linux anyway, so I'd like to keep to ready-made rpm packages for my
    distribution (SuSE 9.1) and I can't find any.

    b) make MyAppClass a classic class.

    c) instead of deriving my QAppClass from QApplication and from
    MyAppClass, derive it only from QApplication and put a reference to a
    MyAppClass instance into it as an attribute.

    What's the best way (and why), or is there a d)?

    Thank you,
    Koczian

    --
    Dr. Sibylle Koczian
    Universitaetsbibliothek, Abt. Naturwiss.
    D-86135 Augsburg

    Tel.: (0821) 598-2400, Fax : (0821) 598-2410
    e-mail : -Augsburg.DE
     
    Sibylle Koczian, May 12, 2004
    #1
    1. Advertising

  2. Sibylle Koczian

    John J. Lee Guest

    Sibylle Koczian <-Augsburg.de> writes:
    [...]
    > a) use SIP v4, but it's pre-release. Moreover I'm just starting with

    [...]

    I'd say the acceptability of this depends on what kinds of people the
    program needs to be distributed to -- yourself being a special case of
    distributee :) If I know I'll never distribute something, or won't
    for, say, a year or so, I feel few qualms about using new code.
    Depends what people have said about the stability of the code, of
    course, but I'd be surprised if Phil Thompson's pre-release code was
    bug-ridden.


    > Linux anyway, so I'd like to keep to ready-made rpm packages for my
    > distribution (SuSE 9.1) and I can't find any.


    If you want to get into good habits, you could make your own rpm by
    copying the spec files from old sip / PyQt packages -- it's not too
    hard, I'm told.

    Personally, I have slovenly habits and just compile from the original
    tarball when it's not on a distro CD or automatically fetch-able with
    dependencies (using apt-get, in my case).


    > b) make MyAppClass a classic class.


    A shame to lose properties, assuming you have a good use for them.


    > c) instead of deriving my QAppClass from QApplication and from
    > MyAppClass, derive it only from QApplication and put a reference to a
    > MyAppClass instance into it as an attribute.
    >
    > What's the best way (and why),


    c). :)


    > or is there a d)?


    Surely.


    John
     
    John J. Lee, May 12, 2004
    #2
    1. Advertising

  3. Re: Qt,

    On Wednesday 12 May 2004 12:01 pm, Sibylle Koczian wrote:
    > I want to try out several applications, all doing the same thing but
    > using different GUI libraries (Tkinter, Qt, wxWindows). Using an example
    > I found in a book I wrote a class containing the GUI independent methods
    > of the application, let's call it MyAppClass. The book is written before
    > Python 2.2, so it uses classic classes, but I want some properties, so I
    > made MyAppClass a new style class.
    >
    > For the Tkinter GUI I derive another class, TkAppClass, from this, whose
    > methods use Tkinter. As Qt applications need an application class
    > derived from QApplication, I wanted to derive my QAppClass from both
    > classes, QApplication and MyAppClass, but got a TypeError: "cannot
    > create a class derived from a SIP generated class (QApplication) and a
    > new-style class - use SIP v4 or later instead".
    >
    > Now I see three different ways out of this:
    >
    > a) use SIP v4, but it's pre-release. Moreover I'm just starting with
    > Linux anyway, so I'd like to keep to ready-made rpm packages for my
    > distribution (SuSE 9.1) and I can't find any.
    >
    > b) make MyAppClass a classic class.
    >
    > c) instead of deriving my QAppClass from QApplication and from
    > MyAppClass, derive it only from QApplication and put a reference to a
    > MyAppClass instance into it as an attribute.
    >
    > What's the best way (and why), or is there a d)?


    I'd recommend a). The only reason SIP v4 is still a pre-release is that I said
    that I'd only release the final version when the documentation was complete.
    The code itself is stable with no known outstanding issues.

    Phil
     
    Phil Thompson, May 12, 2004
    #3
  4. Re: Qt, multiple inheritance: QApplication and new-style classnot possible

    Phil Thompson schrieb:

    >>Now I see three different ways out of this:
    >>
    >>a) use SIP v4, but it's pre-release. Moreover I'm just starting with
    >>Linux anyway, so I'd like to keep to ready-made rpm packages for my
    >>distribution (SuSE 9.1) and I can't find any.
    >>

    > I'd recommend a). The only reason SIP v4 is still a pre-release is that I said
    > that I'd only release the final version when the documentation was complete.
    > The code itself is stable with no known outstanding issues.
    >

    In that case I think I'll try it, thank you!

    --
    Dr. Sibylle Koczian
    Universitaetsbibliothek, Abt. Naturwiss.
    D-86135 Augsburg

    Tel.: (0821) 598-2400, Fax : (0821) 598-2410
    e-mail : -Augsburg.DE
     
    Sibylle Koczian, May 13, 2004
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    1
    Views:
    812
    Bertilo Wennergren
    Nov 24, 2003
  2. dlo_olb
    Replies:
    2
    Views:
    2,361
    Fredrik Lundh
    Jun 25, 2003
  3. Replies:
    15
    Views:
    3,733
  4. Replies:
    13
    Views:
    538
    Robert Kern
    Dec 20, 2007
  5. Jayden
    Replies:
    9
    Views:
    313
    alex23
    Sep 27, 2012
Loading...

Share This Page