第十四章:应用构建模块-readline: GNU readline库-hook

14.3.5 hook
可以使用一些hook来触发动作,作为交互序列的一部分。显示提示符之前会调用启动(startup)hook,显示提示符之后但从用户读取文本之前会运行预输入(pre-input)hook。

try:
    import gnureadline as readline
except ImportError:
    import readline


def startup_hook():
    readline.insert_text('from startup_hook')


def pre_input_hook():
    readline.insert_text(' from pre_input_hook')
    readline.redisplay()

readline.set_startup_hook(startup_hook)
readline.set_pre_input_hook(pre_input_hook)
readline.parse_and_bind('tab: complete')

while True:
    line = input('Prompt ("stop" to quit): ')
    if line == 'stop':
        break
    print('ENTERED: {!r}'.format(line))

每个hook都可能是一个很好的机会,可以利用这些机会使用insert_text()修改输入缓冲区。
在这里插入图片描述

如果在预输入hook中修改了缓冲区,那么必须调用redisplay()更新屏幕。

猜你喜欢

转载自blog.csdn.net/weixin_43193719/article/details/93765294
GNU