Python traitsui防止txt框实时更新

Python traitsui防止txt框实时更新,python,enthought,traitsui,Python,Enthought,Traitsui,通常在使用traitsui时,我有一个依赖于某种代价较高的关系的,我不想用文本框中的每个字符输入更新特征 例如,如果我在计算中使用了一个Int,通过dependens_on linkage,每当我向Int添加一个数字时,就会启动该linkage 目前我通过使用按钮来避免这种情况,但我很好奇是否有办法推迟更新所有内容,直到用户点击enter或更改UI的焦点 谢谢 alex您只需向文本编辑器指定您正在创建的两个关键字参数auto\u set和enter\u set,以便小部件知道何时需要评估您的值。

通常在使用traitsui时,我有一个依赖于某种代价较高的关系的
,我不想用文本框中的每个字符输入更新特征

例如,如果我在计算中使用了一个Int,通过dependens_on linkage,每当我向Int添加一个数字时,就会启动该linkage

目前我通过使用按钮来避免这种情况,但我很好奇是否有办法推迟更新所有内容,直到用户点击
enter
或更改UI的焦点

谢谢


alex

您只需向文本编辑器指定您正在创建的两个关键字参数
auto\u set
enter\u set
,以便小部件知道何时需要评估您的值。下面是一个实现惰性小部件的示例:

from traits.api import HasTraits, Int
from traitsui.api import TextEditor, View, Item

class LazyEval(HasTraits):
    a = Int
    # Additional 'evaluate' is needed to make an int from a string
    view = View(Item("a", editor=TextEditor(auto_set=False, enter_set=True, 
                                            evaluate=int))) 

    def _a_changed(self):
        print "New value of a is %s" % self.a


l = LazyEval()
l.configure_traits()
此代码将仅在您现在按enter键时打印a的值。如果您删除了auto_set并输入了_set,它会在每次击键时打印它。有关详细信息: