You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ranger文件管理器中自定义命令获取用户输入?

在Ranger中自定义命令获取用户输入的正确方法

ranger是基于ncurses的事件驱动终端UI程序,直接用input()会阻塞事件循环导致界面冻结,而且你尝试的self.fm.ui.console.input()方法并不存在。正确的做法是使用ranger内置的输入交互API,以下是可行的实现方式:

推荐方式:使用回调函数处理输入(非阻塞)

这种方式符合ranger的事件驱动设计,不会冻结界面:

class user_input(Command):
    def execute(self):
        # 定义输入完成后的回调逻辑
        def handle_input(input_content):
            if input_content:
                self.fm.notify(f"你输入的内容是: {input_content}")
            else:
                self.fm.notify("未输入任何内容")
        
        # 打开输入提示符,指定提示文本和回调函数
        self.fm.ui.open_prompt("user input...", callback=handle_input)

原理说明

  • open_prompt()是ranger UI层提供的方法,会在终端界面上显示输入框,用户输入完成后触发你定义的回调函数
  • 这种方式不会阻断ranger的事件循环,因此界面不会冻结

注意事项

  • 不要使用Python原生的input()或sys.stdin.read(),这类方法会直接读取标准输入,破坏ranger的事件驱动流程
  • 如果需要简单的确认类输入(如Yes/No),可以使用self.fm.ask_yesno("确认执行?")方法

内容的提问来源于stack exchange,提问作者Minux-Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:23:14