Shift+Return在python中插入换行符

2024-04-25 09:01:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图了解典型的IM客户机的行为,它们使用Return发送文本,Shift + Return插入换行符。在Python中有没有一种方法可以用最少的工作量来实现这一点,比如使用readlineraw_input?在


Tags: 方法文本inputreadline客户机rawreturnshift
3条回答

我怀疑仅仅使用readline模块是不能做到这一点的,因为它不会捕获按下的单个键,而是处理来自输入驱动程序的字符响应。在

您可以用PyHook来完成,如果Shift键与Enter键一起按下,将新行注入到readline流中。在

好吧,我听说在某种程度上也可以用readline来完成。在

您可以import readline并在配置中设置所需的键(Shift+Enter)到一个宏,该宏将一些特殊字符放入行和换行符的末尾。然后可以在循环中调用raw_input。在

像这样:

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)

我认为只需花费很少的精力就可以使用Python的urwid库。很遗憾,raw/u不能满足您的输入要求。在

更新:其他解决方案请参见this answer。在

相关问题 更多 >

    热门问题