我正在尝试在 Python 中使用 npyscreen 构建一个聊天应用程序。当在Textfield小部件上按下 enter 时,没有任何反应。我想让这个动作将消息发送到服务器。
我已经通过使用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 时被调用。是否可以做我想做的事,如果可以,怎么做?