Edit detail for VstupBezEnteru revision 1 of 1

1
Editor: mol
Time: 2010/01/09 20:12:24 GMT+1
Note:

changed:
-
<p>Jak zařídit, aby se přečetl znak bez čekání na Enter?</p>

<h2>Windows</h2>
<p>Viz funkce <tt>msvcrt.getch()</tt> a následující.</p>

<h2>Unix</h2>

<h3>Přímo</h3>
<pre>import sys
import termios
import tty
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
tty.setcbreak(fd)
try:
	print 'Stiskni q pro konec'
	ch = sys.stdin.read(1)
	while ch <> 'q':
		print 'To nebylo ono'
		ch = sys.stdin.read(1)
finally:
	termios.tcsetattr(fd, termios.TCSAFLUSH, old)</pre>

<h3>!NCurses</h3>
<pre>import curses
stdscr = curses.initscr()
try:
	stdscr.scrollok(True)
	curses.noecho()
	curses.cbreak()

	stdscr.addstr('Stiskni q pro konec\n')
	ch = stdscr.getch()
	while ch <> ord('q'):
		stdscr.addstr('To nebylo ono\n')
		ch = stdscr.getch()
	
finally:
	curses.nocbreak()
	curses.echo()
	curses.endwin()</pre>


Jak zařídit, aby se přečetl znak bez čekání na Enter?

Windows

Viz funkce msvcrt.getch() a následující.

Unix

Přímo

import sys
import termios
import tty
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
tty.setcbreak(fd)
try:
	print 'Stiskni q pro konec'
	ch = sys.stdin.read(1)
	while ch <> 'q':
		print 'To nebylo ono'
		ch = sys.stdin.read(1)
finally:
	termios.tcsetattr(fd, termios.TCSAFLUSH, old)

NCurses

import curses
stdscr = curses.initscr()
try:
	stdscr.scrollok(True)
	curses.noecho()
	curses.cbreak()

	stdscr.addstr('Stiskni q pro konec\n')
	ch = stdscr.getch()
	while ch <> ord('q'):
		stdscr.addstr('To nebylo ono\n')
		ch = stdscr.getch()
	
finally:
	curses.nocbreak()
	curses.echo()
	curses.endwin()