[PyKDE] ANNOUNCE: IQtPy for event handling by Python's read-eval-print loop

Gerard Vermeulen gvermeul at grenoble.cnrs.fr
Sun Feb 23 19:02:01 GMT 2003


I am using this little toy for a week and I can't miss it anymore:

it allows me to use the standard Python interpreter running in an
xterm/Eterm/konsole to create and control PyQt widgets, and to use
the widgets at the same time as in a standard GUI program.

You can get this little toy (less 100 lines of C++ code including
a lot of comments and whitespace) from

Name: IQtPy
Version: 0.1
Summary: Tool to control PyQt widgets from Python running in a terminal
Home-page: http://gerard.vermeulen.free.fr
Author: Gerard Vermeulen
Author-email: gvermeul at grenoble dot cnrs dot fr
License: LGPL
        IQtPy enables you to create and control PyQt widgets from the
        Python interpreter (or IPython) running in a text terminal.

        The programming style 'imposed' by PyQt (and other GUI toolkits) is
        to create an application instance, some widgets and to enter into
        an event loop that locks YOU from the terminal. IQtPy gives you both
        worlds: you can type Python statements in the interpreter and interact
        with your widgets at the same time.

        IQtPy works by hooking a function handling a limited number of events
        on the event hook of the readline module. The GNU readline library
        closes the event loop by calling the hooked function at a maximum
        rate of 10 times per second while reading your keyboard input.

        This method can be applied to any GUI toolkit that permits to process
        events out of the main event loop and any Python interpreter with a
        decent readline module.
        ;-) Oh Bill, this seems to exclude Python compiled with MSVC ;-)

        The following example displays 100 working clocks:

        packer:~/IQtPy-0.1$ python
        Python 2.2.2 (#1, Nov  2 2002, 15:17:50)
        [GCC 2.95.3 20010315 (release)] on linux2
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import iqt, aclock
        >>> list = []
        >>> for i in range(100): list.append(aclock.clock())
        >>> Ctrl-D

Platform: Unix

Happy hacking -- Gerard

More information about the PyQt mailing list