8

Returnテキストを送信しShift + Returnて改行を挿入するために使用する典型的な IM クライアントの動作を取得しようとしています。たとえばreadlineとを使用して、Python で最小限の労力でそれを達成する方法はありraw_inputますか?

4

4 に答える 4

2

さて、ある意味で、でも達成できると聞き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)
于 2012-07-05T12:19:08.180 に答える
1

readline押された個々のキーをキャプチャせず、入力ドライバーからの文字応答を処理するだけなので、モジュールを使用するだけでそれができるとは思えません。

ただし、PyHookを使用して行うこともできます。また、Shiftキーと一緒にEnterキーを押して、ストリームに改行を挿入することもできますreadline

于 2012-07-05T11:30:25.583 に答える
1

最小限の労力で Python 用のurwidライブラリを使用できると思います。残念ながら、これは readline/raw_input を使用するという要件を満たしていません。

更新:他の解決策については、この回答も参照してください。

于 2012-07-05T11:30:35.443 に答える