【问题标题】:Is it possible to make a custom handler for the enter key in a npyscreen Textfield?是否可以为 npyscreen 文本字段中的输入键创建自定义处理程序?
【发布时间】:2019-04-07 14:16:58
【问题描述】:

我正在尝试使用 Python 中的 npyscreen 构建一个聊天应用程序。 当输入 Textfield 小部件时,什么也没有发生。 我想让这个动作将消息发送到服务器。

我已经通过使用 MultiLineEdit 小部件并覆盖其方法使其工作

        def when_value_edited(self):

监控文本输入的变化。当在当前输入字符串中找到换行符时,它将发送消息并清除该字段。 我对这种方法的问题是它有点脏。 除此之外,我还更喜欢使用 Textfield 小部件而不是 MultiLineEdit 小部件。

我试图在主窗体中创建一个处理程序,但 eval_input 方法从未被触发。

class MainWindow(npyscreen.FormBaseNew):
    def create(self):
        new_handlers = {
            # Set ctrl+Q to exit
            "^Q": self.exit_func,
            # Evaluate input on newline or carriage return
            curses.ascii.NL: self.eval_input,
            curses.ascii.CR: self.eval_input
        }
        self.add_handlers(new_handlers)

    def exit_func(self, _input):
        exit(0)

    def eval_input(self, _input):
        print("TRIGGERED")
        self.parentApp.msg = self.widget_input.value
        self.widget_input.value = ""

我希望 widget_input.value 更改为空字符串,但是当我在 Textfield 小部件中键入时按回车键时没有任何反应。 eval_input 方法永远不会被调用,而 exit_func 方法会在我按下 control + q 时被调用。 有没有可能做我想做的事,如果可以,怎么做?

【问题讨论】:

    标签: python handler enter npyscreen


    【解决方案1】:

    self.Textfield.entry_widget.handlers.update({curses.ascii.NL: self.input_send})

    【讨论】:

    • 欢迎来到 SO。添加关于您的代码如何回答问题的解释是个好主意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    相关资源
    最近更新 更多