En Sun, 01 Nov 2009 23:13:10 -0300, Dave Angel <da...@ieee.org> escribió:
Gabriel Genellina wrote:
En Sun, 01 Nov 2009 13:34:44 -0300, KillSwitch
<gu.yakahug...@gmail.com> escribió:
On Nov 1, 5:34 am, Dave Angel <da...@ieee.org> wrote:
KillSwitch wrote:
> I have a C++ program, with a GUI, into which I have embedded
python. I
> have made several python functions in C++, one of which I use to
> override the normal stdout and stderr so that they print to a text
box
> of my GUI. One thing I cannot think of how to do is to redefine
stdin
> so that it pauses the program, waits for a user to type input into
the
> box, hit enter, and takes input from another text element and sends
it
> to python like it was the console.
I suspect you don't really want to redirect stdin, but instead
implement
raw_input().
But what would the function do? How would it pause python and wait for
it to have text to send?
Whatever you want. You don't have to "pause python", Python itself
won't resume until your function doesn't return. [example using
Tkinter.askstring]
I think I see the OP's problem. He has written a GUI program in C++,
and is using (embedding) Python functions into it. So presumably those
functions are being called from events in the C++ event loop.
If one of those functions tries to call back into C++ code, the event
loop will never get control, to process the events from the standard UI
controls.
So if the input is to be handled as an integral part of the C++ UI,
there's a distinct problem.
On the other hand, Gabriel's dialog box should work fine, as long as you
don' t mind a modal dialog box as a solution. I don't know tkinter's
askstring, but I suspect it'd work. However, the rest of the C++ GUI
would be frozen, which could be a problem.
Perhaps looking a other examples may help. Both IDLE and PythonWin replace
raw_input with a message box; IDLE is a Tkinter application, and PythonWin
wraps MFC. Both have a main message loop and use a modal message box.
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list