【发布时间】: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