python - 是否可以为 npyscreen 文本字段中的输入键创建自定义处理程序?
问题描述
我正在尝试在 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 时被调用。是否可以做我想做的事,如果可以,怎么做?
解决方案
self.Textfield.entry_widget.handlers.update({curses.ascii.NL: self.input_send})
推荐阅读
- python - Airflow:创建一次性动态 SubDag
- python - 使用 GPU 运行 Keras/Theano
- templates - 键入 trait 以检查 Eigen 类型是表达式(无存储)还是矩阵或数组(有存储)?
- bash - Dockerfile 不会替换文本,但命令行会,可能的错误?
- google-calendar-api - Google Calendar API - 更深入地了解日历使用限制超出错误
- python-3.x - 构建失败:没有名为 virtualenv 的模块
- c++ - 错误 C2440:“=”:无法从“const char *”转换为“LPCWSTR”
- python - 如何通过 Windows 身份验证将 JSON 导入 Pandas 数据框
- ios - 您的应用使用“prefs:root=”非公共 URL 方案。更新旧代码的最佳计划?
- c++ - 安装 OPEN-MPI 时的问题