Я пытаюсь создать приложение чата с npyscreen на Python.Когда ввод введен в виджет Текстовое поле , ничего не происходит.Я бы хотел, чтобы это действие отправляло сообщение на сервер.
Я уже заставил его работать с помощью виджета 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.Можно ли делать то, что я хочу, и если да, то как?