gpt4 book ai didi

TreeCtrl 右键单击​​时的 wxPython 弹出菜单

转载 作者:行者123 更新时间:2023-12-03 06:25:30 25 4
gpt4 key购买 nike

我想要一个树控件,我可以右键单击以创建弹出菜单。单击项目菜单时,会发送一个事件,其中包含树中的 ItemData。我不知道该怎么做。到目前为止我所拥有的只是一个简单的弹出菜单生成

# Panel

def __init__(self, ...):
# ...
self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnRightClick)

def OnRightClick(self, event):
popupmenu = wx.Menu()
entries = ['One', 'Two']
for entry in entries:
menuItem = popupmenu.Append(-1, entry)

如何从 TreeEvent 获取 TreeCtrl ItemData?获得此数据后,是否需要将其附加到自定义事件?

编辑:获取项目数据需要采取迂回的方式。

item = event.GetItem()
itemData = self.tree.GetItemData(item).GetData()

最佳答案

我在 irc 上得到了一些帮助。一旦我获得了项目数据,我就使用 lambda 来包装一个事件处理程序

def OnRightClick(self, event):
"""Setup and Open a popup menu."""
# Get TreeItemData
item = event.GetItem()
itemData = self.tree.GetItemData(item).GetData()
# Create menu
popupmenu = wx.Menu()
entries = ['One', 'Two']
for entry in entries:
menuItem = popupmenu.Append(-1, entry)
wrapper = lambda event: self.OnStuff(event, itemData)
self.Bind(wx.EVT_MENU, wrapper, menuItem)

# Show menu
self.PopupMenu(popupmenu, event.GetPoint())

def OnStuff(self, event, data=None):
myEvent = events.myCustomEvent(self.GetId(), data=data)
wx.PostEvent(self, myEvent)

关于TreeCtrl 右键单击​​时的 wxPython 弹出菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38999313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com