私は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())
手掛かりはありますか?
は、私は私のミスを見つけた検索の数日後にあなたとよろしく トーマス