On 5/29/2017 12:14 PM, Dennis Lee Bieber wrote:
On Mon, 29 May 2017 06:14:46 -0700 (PDT), Poul Riis <prii...@gmail.com>
declaimed the following:
In good old pascal there was this one-liner command:
repeat until keypressed
Apparently there is no built-in analogue for that in python. I have explored
several different possibilities (pyglet, keyboard, curses, ginput (from
matplotlib) and others) but not managed to find anything that works the way I
want.
What OS?
In the following example I just want to replace 'waitforbuttonpress' with
something like 'continueuntilbuttonpress' if such a command exists. It could be
a mouseclick or a keystroke from the terminal, for instance 'shift', 'space'
or some character.
I'm presuming this "waitforbuttonpress" is a feature of pylab -- but I
can't be sure as you used the polluting "import *" (Google seems to
indicate it is matplotlib)
Under Windows one has access to the msvcrt module
if msvcrt.kbhit(): break
... But I don't know how this will interact with a graphical window (the
msvcrt module provides functions for /console/ interaction [kbhit, getch,
putch, ungetch] and for locking regions of files)
If a tk(inter) window has input focus, the msvcrt console key functions
do not work. For instance, when one runs code via IDLE, IDLE's Shell
gets the focus. I documented this for IDLE under "IDLE-console
differences" after someone reported a problem with kbhit on
Stackoverflow. I presume it is true for other GUIs.
If one has a tkinter GUI, the following might work:
go = True
def key_pressed(event): go = False
<bind key-pressed event to key_pressed>
while go:
calculate()
root.update() # allow events to be processed
The while-loop can be and in some cases will have to be replaced by
root.after calls.
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list