這是使用curses
的溶液(末它等待x
鍵結束程序):
#!/usr/bin/python
import time
import sys
import curses
def questionloop(stdscr):
stdscr.addstr("Question: ")
curses.echo()
while (1):
answer = stdscr.getstr()
curses.flushinp()
stdscr.clear()
stdscr.addstr("This is correct!")
doit = stdscr.getch()
if doit == ord('x'):
stdscr.addstr("Exiting!\n")
break
curses.wrapper(questionloop)
這是使用urwid
一個例子:
import urwid
def exit_on_q(key):
if key in ('q', 'Q'):
raise urwid.ExitMainLoop()
class QuestionBox(urwid.Filler):
def keypress(self, size, key):
if key != 'enter':
return super(QuestionBox, self).keypress(size, key)
self.original_widget = urwid.Text(
u"%s\n" %
edit.edit_text)
edit = urwid.Edit(u"Question: \n")
fill = QuestionBox(edit)
loop = urwid.MainLoop(fill, unhandled_input=exit_on_q)
loop.run()
另一個(可能是最簡潔的)解決方案,from Veedrac's answer,是使用blessings
:
from blessings import Terminal
term = Terminal()
question = "{t.red}{}{t.normal}{t.bold}".format
answer = "{t.normal}{t.move_up}{t.green}{}{t.normal}{t.clear_eol}".format
input(question("Question: ", t=term))
print(answer("Correct!", t=term))
真棒的東西,如果在UNIX上,你可以嘗試詛咒 - https://docs.python.org/2/howto/curses.html – 2014-12-04 21:13:28
@BhargavRao我打算學[urwid]( http://urwid.org),但在那之前,我正在尋找一個簡單的解決方案。 – octosquidopus 2014-12-04 21:15:48
有3個選項比2更簡單(我猜) – 2014-12-04 21:17:17