treectrl에서 기본 keysearch를 무시하는 방법을 알고 싶습니다.treectrl에서 키 검색을 무시하는 방법은 무엇입니까?
EVT_TREE_KEY_DOWN 이벤트에 메서드를 바인딩하고 treectrl의 selectItem 메서드를 호출하면 아무 효과가 없습니다.
테스트 < --root
-Aero OREA (EI)
-Blub (BL)
- 테스트 (AX)
:
이
내 나무입니다 -123 (45)-Blib (LOL)
내 의도 : keydown 이벤트를 통해 나는 검색 문자열을 연결합니다. 트리 항목을 반복 할 때 이름을 분리하여 대괄호 (예 : "EI", "BL"...)의 내용을 가져옵니다. 그런 다음 대괄호의 내용이 내 searchstring으로 시작하는지 확인합니다. 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())
실마리가 있습니까?
내가 내 실수를 발견 검색의 몇 일 후 안부를 토마스