2014-02-19 40 views
1

當使用traitsui時,我經常使用depends_on關係,這些關係的代價有點高,而且我不會使用文本框的每個字符輸入更新特徵。traitsui防止txt-box實時更新

例如,如果我有一個計算中使用的Int,通過depends_on連接,每次向Int添加數字時都會激活鏈接。

目前我通過使用按鈕規避這種情況,但是我很好奇,如果有一種方法可以推遲更新所有內容,直到用戶點擊enter或更改UI的焦點。

感謝,

亞歷

回答

3

你只需要指定要創建一對夫婦的關鍵字參數的文本編輯auto_setenter_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() 

,當你打,現在輸入驗證碼將打印在一個僅值。如果你刪除了auto_set和enter_set,它會在每次擊鍵時打印它。欲瞭解更多詳情:http://docs.enthought.com/traitsui/traitsui_user_manual/factories_basic.html#texteditor