我无法在 npyscreen 中使用 safe_to_exit 方法

问题描述

我想我遗漏了一些非常基本的东西,但我无法使这个功能工作。
我正在使用 npyscreen 4.10.5 在 Redhat 上运行 python 3.6.12。我的期望是 safe_to_exit 函数可用于在用户退出该字段时立即验证任何输入(使用 Tab 键),但我根本无法触发它。可能我完全误解了这一点。这是我的测试代码,尽量简化:

import npyscreen

def test1(*args):
    F = npyscreen.Form(name='My Test Application')
    Field1 = F.add(npyscreen.TitleText,name="My Test Field")
    Field1.safe_to_exit = Field1_Validations
    F.edit()
    return Field1.value

def Field1_Validations():
    npyscreen.notify_confirm("Safe to exit")
    return True


if __name__ == '__main__':
    onefield = npyscreen.wrapper_basic(test1)
    print("Results are : {} ".format(onefield))

任何指针将不胜感激。

解决方法

我仍在挖掘,但我发现似乎没有在所有小部件上实现 safe_to_exit。将小部件从“TitleText”更改为“Textfield”会导致验证代码触发。

,

拉了很多头发之后我就解决了。它们的语法是(适用于上面的代码示例):

self.Field1.entry_widget.safe_to_exit = Field1_Validations