0
Linux上でgetchとprogressbar Pythonモジュールを組み合わせようとしていますが、動作させることができません。 getchを使ってプログレスバーを中断するためのキーボード入力を聞きたいですが、getchステートメントを挿入するとプログレスバーは自動的に更新を拒否し、キーボードのボタンを押すと更新するだけです。Getchとprogressbar
私が現在使用しているコードは以下の通りです。 ProgressBar2とgetchモジュールを使用していますが、私はtqdmと私自身のgetchメソッドを無駄に使ってみました。
bar = progressbar.ProgressBar()
for i in range(101):
sleep(0.01)
bar.update(i)
ch = getch.getch()
getchは私の独自の実装を使用する場合、私は次のコードで「sys.stdin.read(1)」行と一緒に問題を絞り込むました。
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno(), termios.TCSADRAIN)
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
Windowsでは、msvcrtモジュールを使用しても問題はありません。
私は 'file.read()'ブロックをデフォルトで使用します。イベントループ、キーボードイベント、プログレスバーウィジェット(他のものの中で)を持つ[urwid](http://urwid.org/)はどうでしょうか? – blubberdiblub