2012-01-12 14 views
0

私はtreectrlのデフォルトのkeysearchを上書きする方法を知りたがっています。treectrlのキー検索を無効にするにはどうすればよいですか?

EVT_TREE_KEY_DOWNイベントにメソッドをバインドし、treectrlのselectItemメソッドを呼び出すと、何の効果もありません。

これは私の木である:

テスト< --root

-Aeroオレア(EI)

-Blub(BL)

-Test(AX)

-123(45)

-Blib(LOL)

私の意図: keydownイベントでは、私は検索文字列を連結しています。ツリーアイテムを反復処理するときに、名前を分割して角括弧の内容を取得します(例: "EI"、 "BL" ...)。 次に、角括弧の内容が検索ストリングで始まるかどうかを確認します。 trueの場合は、selectItem(TreeItemId)が呼び出されます。しかし、これは動作しません。デフォルトの検索はまだ機能していて、私のキーサーチで問題を引き起こしているようです。

class MeinTreeCtrl(wx.TreeCtrl): 

def __init__(self, parent): 
    wx.TreeCtrl.__init__(self, parent, -1) 
    root = self.AddRoot("test") 
    self.AppendItem(root, "Aero orea(EI)") 
    self.AppendItem(root, "Blub(BL)") 
    self.AppendItem(root, "Test(AX)") 
    self.AppendItem(root, "123(45)") 
    self.AppendItem(root, "Blib(LOL)") 
    self.searchString = "" 
    self.lastKeyDown = time.time() 

    parent.Bind(wx.EVT_TREE_KEY_DOWN, self.OnTreeKeySearch, self) 

def GetItem(self, match, root): 
    item = self.GetFirstChild(root) 
    while item.IsOk(): 
     tmp = self.GetItemText(item) 
     tmp = tmp.split(")") 
     tmp = tmp[len(tmp) - 2] 
     tmp = tmp.split("(") 
     tmp = tmp[len(tmp) - 1] 
     if tmp.startswith(match): 
      self.SelectItem(item) 
      break 
     item = self.GetNextChild(root, item) 
    return False 

def OnTreeKeySearch(self, event):   
    now = time.time() 
    if self.searchString == "": 
     self.searchString = chr(event.GetKeyCode()) 
    if (now - self.lastKeyDown) < 3: 
     self.searchString += str(chr(event.GetKeyCode())) 
    else: 
     self.searchString = str(chr(event.GetKeyCode())) 
    self.lastKeyDown = now 
    self.GetItem(self.searchString, self.GetRootItem()) 

手掛かりはありますか?

は、私は私のミスを見つけた検索の数日後にあなたとよろしく トーマス

答えて

0

ありがとうございます。 この行が問題だった:

parent.Bind(wx.EVT_TREE_KEY_DOWN, self.OnTreeKeySearch, self) 

まず私は、キーダウンのためだけEVT_KEY_DOWNないツリーイベントを必要としています。 第二に、私はこの文は私にとって本当に便利だった

(私は&ペースト:(コピーしなかったので、それがある)ない自己に私の親にメソッドをバインドさ:

伝播しないイベントの典型的な例をwx.EVT_KEY_DOWNある それがフォーカスを持つコントロールにのみ送信され、そしてその親に伝播しない ます

- 。。EventPropagation

関連する問題