カーソルがある行のインデックス番号を取得 - Python
python-prompt-toolkitでカーソル行のインデックス番号を取得したいとき
prompt_toolkit.document.Document.cursor_position_row
カーソルがある行のインデックス番号が取得できる
0から数える
from prompt_toolkit.application import Application from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.layout.containers import Window from prompt_toolkit.layout.controls import BufferControl from prompt_toolkit.layout.layout import Layout from prompt_toolkit.buffer import Buffer from prompt_toolkit.document import Document from logging import getLogger, config config.fileConfig("logger.conf") logger = getLogger(__name__) text = '\n'.join([str(i) for i in range(100)]) body = Window(BufferControl(Buffer(document=Document(text))), cursorline=True) # キーバインディング kb = KeyBindings() @kb.add('q') def _(event): event.app.exit() @kb.add('o') def _(event): # ここ!!!! logger.debug(event.current_buffer.document.cursor_position_row) app = Application( layout=Layout(body), key_bindings=kb, full_screen=True) app.run()
Enterを押すと、インデックス番号が取得できる
logger.confは以下のようになっている
[loggers] keys=root [handlers] keys=fileHandler [formatters] keys=simpleFormatter [logger_root] level=DEBUG handlers=fileHandler [handler_fileHandler] class=FileHandler level=DEBUG ; ハンドラで使用するフォーマッタを指定 formatter=simpleFormatter ; FileHandlerのコンストラクタへの引数 args=("log.log", "a+") [formatter_simpleFormatter] format=%(asctime)s:%(levelname)s %(message)s ; 時間の表示形式を設定 datefmt=%Y-%m-%d %H:%M:%S