import readline
# I am using Ctrl+K to insert line break
# (dont know what symbol is for shift+enter)
readline.parse_and_bind('C-k: "#\n"')
text = []
line = "#"
while line and line[-1]=='#':
line = raw_input("> ")
if line.endswith("#"):
text.append(line[:-1])
else:
text.append(line)
# all lines are in "text" list variable
print "\n".join(text)
我怀疑仅仅使用
readline
模块是不能做到这一点的,因为它不会捕获按下的单个键,而是处理来自输入驱动程序的字符响应。在您可以用PyHook来完成,如果
Shift
键与Enter
键一起按下,将新行注入到readline
流中。在好吧,我听说在某种程度上也可以用
readline
来完成。在您可以
import readline
并在配置中设置所需的键(Shift+Enter)到一个宏,该宏将一些特殊字符放入行和换行符的末尾。然后可以在循环中调用raw_input
。在像这样:
我认为只需花费很少的精力就可以使用Python的urwid库。很遗憾,raw/u不能满足您的输入要求。在
更新:其他解决方案请参见this answer。在
相关问题 更多 >
编程相关推荐