PyQt leaves C-code in python modules

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Dave

    PyQt leaves C-code in python modules

    I'm having a strange problem with the pyqt-tools in the latest Debian
    packages. When I run
    $ pyuic colortool.ui > colortool.py
    Extracting init()
    Extracting loadSettings()
    Extracting saveSettings()
    ....
    it produces 'colortool.py' with python function headers, but the body of the
    functions are still in C. There are no error messages, just the normal log
    of "extracting " functions.


    The file colortool.ui is the tutorial example from the Qt Designer manual,
    and it works correctly when compiled in C. The versions on all the relevant
    packages seem to be correct:

    -> pyuic is from package pyqt-tools 3.8-2.1 This package depends on:
    libc6 (>= 2.3.2-1), libgcc1 (>= 1:3.3.1-1), libqt3c102-mt (>= 3:3.2.1),
    libstdc++5 (>= 1:3.3.1-1), xlibs (>> 4.1.0)
    -> Current versions shown by dpkg are:
    libc6 2.3.2-9, libgcc1 1:3.3.2-1, libqt3c102-mt 3:3.2.1-6, libstdc++5
    1:3.3.2-1, xlibs 4.2.1-12.1
    -> designer is from package qt3-designer 3:3.2.1-6


    $ pyuic -version
    Python User Interface Compiler 3.8 for Qt version 3.2.1


    I have used Python and Qt in Redhat 9, after great effort to correct
    mismatched versions in their packaging. That is the only reason I suspected
    packaging problems here, but so far I've had much better experience with
    Debian's packages.



    This is very frustrating. I've committed to a project using Qt and Python,
    and I'm totally dependent on pyuic. Any suggestions would be much
    appreciated.



    -- Dave




  • Phil Thompson

    #2
    Re: PyQt leaves C-code in python modules

    On Tuesday 04 November 2003 6:45 pm, Dave wrote:[color=blue]
    > I'm having a strange problem with the pyqt-tools in the latest Debian
    > packages. When I run
    > $ pyuic colortool.ui > colortool.py
    > Extracting init()
    > Extracting loadSettings()
    > Extracting saveSettings()
    > ...
    > it produces 'colortool.py' with python function headers, but the body of
    > the functions are still in C. There are no error messages, just the normal
    > log of "extracting " functions.
    >
    >
    > The file colortool.ui is the tutorial example from the Qt Designer manual,
    > and it works correctly when compiled in C. The versions on all the
    > relevant packages seem to be correct:
    >
    > -> pyuic is from package pyqt-tools 3.8-2.1 This package depends on:
    > libc6 (>= 2.3.2-1), libgcc1 (>= 1:3.3.1-1), libqt3c102-mt (>= 3:3.2.1),
    > libstdc++5 (>= 1:3.3.1-1), xlibs (>> 4.1.0)
    > -> Current versions shown by dpkg are:
    > libc6 2.3.2-9, libgcc1 1:3.3.2-1, libqt3c102-mt 3:3.2.1-6, libstdc++5
    > 1:3.3.2-1, xlibs 4.2.1-12.1
    > -> designer is from package qt3-designer 3:3.2.1-6
    >
    >
    > $ pyuic -version
    > Python User Interface Compiler 3.8 for Qt version 3.2.1
    >
    >
    > I have used Python and Qt in Redhat 9, after great effort to correct
    > mismatched versions in their packaging. That is the only reason I
    > suspected packaging problems here, but so far I've had much better
    > experience with Debian's packages.
    >
    >
    >
    > This is very frustrating. I've committed to a project using Qt and Python,
    > and I'm totally dependent on pyuic. Any suggestions would be much
    > appreciated.[/color]

    That's because the form includes embedded C++ code. There is nothing to stop
    you embedding Python code (just ignore the C++ style function definition) and
    it will be properly extracted.

    What pyuic doesn't do is look at the embedded code and try to work out if it
    is Python or something else.

    Phil


    Comment

    • Dave

      #3
      Re: PyQt leaves C-code in python modules

      "Phil Thompson" <phil@riverbank computing.co.uk > wrote in message
      news:mailman.43 9.1067973360.70 2.python-list@python.org ...[color=blue]
      > On Tuesday 04 November 2003 6:45 pm, Dave wrote:[color=green]
      > > I'm having a strange problem with the pyqt-tools in the latest Debian
      > > packages. When I run
      > > $ pyuic colortool.ui > colortool.py
      > > Extracting init()
      > > Extracting loadSettings()
      > > Extracting saveSettings()
      > > ...
      > > it produces 'colortool.py' with python function headers, but the body of
      > > the functions are still in C. There are no error messages, just the[/color][/color]
      normal[color=blue][color=green]
      > > log of "extracting " functions.
      > >[/color][/color]
      [...][color=blue]
      > That's because the form includes embedded C++ code. There is nothing to[/color]
      stop[color=blue]
      > you embedding Python code (just ignore the C++ style function definition)[/color]
      and[color=blue]
      > it will be properly extracted.
      >
      > What pyuic doesn't do is look at the embedded code and try to work out if[/color]
      it[color=blue]
      > is Python or something else.[/color]

      OK, I can ignore the C++ embedded code, but it seems that Python can't.

      Python 2.3.2 (#2, Oct 6 2003, 08:02:06)
      [GCC 3.3.2 20030908 (Debian prerelease)] on linux2[color=blue][color=green][color=darkred]
      >>> from colortool import MainForm[/color][/color][/color]
      Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "colortool. py", line 225
      QSettings settings;
      ^
      SyntaxError: invalid syntax


      I must be missing a switch or something.



      -- Dave




      Comment

      • Dave

        #4
        Re: PyQt leaves C-code in python modules

        "Phil Thompson" <phil@riverbank computing.co.uk > wrote in message
        news:mailman.43 9.1067973360.70 2.python-list@python.org ...[color=blue]
        > On Tuesday 04 November 2003 6:45 pm, Dave wrote:[color=green]
        > > I'm having a strange problem with the pyqt-tools in the latest Debian
        > > packages. When I run
        > > $ pyuic colortool.ui > colortool.py
        > > Extracting init()
        > > Extracting loadSettings()
        > > Extracting saveSettings()
        > > ...
        > > it produces 'colortool.py' with python function headers, but the body of
        > > the functions are still in C. There are no error messages, just the[/color][/color]
        normal[color=blue][color=green]
        > > log of "extracting " functions.
        > >[/color][/color]
        [...][color=blue]
        > That's because the form includes embedded C++ code. There is nothing to[/color]
        stop[color=blue]
        > you embedding Python code (just ignore the C++ style function definition)[/color]
        and[color=blue]
        > it will be properly extracted.
        >
        > What pyuic doesn't do is look at the embedded code and try to work out if[/color]
        it[color=blue]
        > is Python or something else.[/color]

        Oops. Please ignore my previous post. I misunderstood what Phil was
        saying. I see now what to do. Just write Python code in the body of the
        C++ stub functions ( leaving the outer { } in place ) , and pyuic will copy
        that code verbatim into the body of the translated Python functions.
        Excellent.

        Many thanks.

        -- Dave


        Comment

        Working...