Much appreciated but as I mentioned, I think I jumped the gun with my post and should be using QThread to hook the python code to my QProgressBar and debug output window (QTextEdit).
I will investigate that now

On 24/01/14 16:08, Sean Fisk wrote:
On Thu, Jan 23, 2014 at 9:42 PM, Frank Rueter | OHUfx <[email protected] <mailto:[email protected]>> wrote:

    Thanks Sean and Ryan,

    I'm still not quite clear on how this ties into QProcess.start()


It doesn’t tie in with |QProcess| at all. We’re advising to avoid using that :)

    I do have a if __name__ ... block in the script in question.
    An example would certainly be awesome, but if it's less hassle,
    explaining how your and Ryan's advise helps use QProcess on a
    python module might already suffice. Maybe a simlpe example says
    it all though?!


I will whip up a simple example for you, but it might take a few hours (lots of stuff to do right now).

    I'm not using python 3 btw

    Thanks guys for your help!!

    frank


    On 24/01/14 15:33, Sean Fisk wrote:

    Hi Frank,

    You should definitely avoid calling Python as a subprocess if you
    can. As far as Ryan’s example, I agree with the |if __name__...|
    but I think that using the |imp| module is a bit overkill. I
    would recommend using Setuptool’s |entry_points| keyword
    
<http://pythonhosted.org/setuptools/setuptools.html#automatic-script-creation>.
    Or distutils’ |scripts| keyword
    <http://docs.python.org/2/distutils/setupscript.html#installing-scripts>,
    if you must.

    An example of a well-known Python package which does this is
    Pygments <https://bitbucket.org/birkenfeld/pygments-main>, which
    has a large “library” component but also comes with the
    |pygmentize| command-line script. The Pygments codebase is pretty
    large, so if you would like me to whip up a simpler example I’d
    be glad to do so.

    Cheers,

    --
    Sean Fisk


    On Thu, Jan 23, 2014 at 9:17 PM, Frank Rueter | OHUfx
    <[email protected] <mailto:[email protected]>> wrote:

        Sorry if I'm being thick, but I'm not quite understanding how
        this helps to connect a python function to qprocess?! All
        your code does is execute the script, right?!
        I can already call myscript.main() straight up, but maybe I'm
        missing the point as I'm unfamiliar with the imp module.

        Let me elaborate a little bit more:
        myscript.main() calls a bunch of other python scripts that
        (directly or through other scripts again) execute external
        programs to do some conversion work. Those external programs
        spit out their progress to stdout which I can see fine when I
        run myscript.main() manually in a python terminal.

        Now I need run myscript.main() via QProcess and grab stdout
        to do be able to show a progress bar as well as show stdout
        and stderr in a debug window inside my QT code.


        Cheers,
        frank




        On 24/01/14 14:58, Ryan Gonzalez wrote:
        If you put an "if __name__ == '__main__'" and a main
        functions, you could always import the script from the GUI
        frontend. Example:

        myscript.py

        def main(argv):
            do_cool_stuff()
            return 0

        if __name__ == '__main__':
        sys.exit(main(sys.argv))

        mygui.py(Python 2):

        import imp

        ...

        main = imp.load_module('myscript', *imp.find_module('myscript'))

        main.main(my_argv)

        mygui.py(Python 3):

        import importlib.machinery

        main = importlib.machinery.SourceFileLoader('myscript',
        'myscript.py').load_module('myscript')

        main.main(my_argv)


        On Thu, Jan 23, 2014 at 7:48 PM, Frank Rueter | OHUfx
        <[email protected] <mailto:[email protected]>> wrote:

            Hi all,

            I got a little code design question:

            I have a python script that does a lot of file
            processing/converting/uploading etc and I'd like to
            write a decent
            interface for it now.
            The main goal is to be able to show the user detailed
            info about the
            current step and progress as well as clean up properly
            in case the whole
            thing is cancelled.

            My existing python code needs to stay independent of QT
            so any
            application that supports python can use it.
            I am wondering now how to best connect the python script
            and the PySide
            code. Should I just run the script as an argument to the
            python
            interpreter like I would with any other program? E.g.:

            process = QtCore.QProcess(self)
            process.start(<path_to_python>, <path_to_python_script>)

            As simple as this seems, it feels odd to use python to
            call itself as an
            external program.


            I'm happy to go that way but am curious how others are
            doing this?!

            Cheers,
            frank

            _______________________________________________
            PySide mailing list
            [email protected] <mailto:[email protected]>
            http://lists.qt-project.org/mailman/listinfo/pyside




-- Ryan
        If anybody ever asks me why I prefer C++ to C, my answer
        will be simple: "It's becauseslejfp23(@#Q*(E*EIdc-SEGFAULT.
        Wait, I don't think that was nul-terminated."



        _______________________________________________
        PySide mailing list
        [email protected] <mailto:[email protected]>
        http://lists.qt-project.org/mailman/listinfo/pyside





_______________________________________________
PySide mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/pyside

Reply via email to