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

Reply via email to