gpt4 book ai didi

python-3.x - wxPython TreeCtrl 非常慢,有数百万个节点(在多选树控件上)

转载 作者:行者123 更新时间:2023-12-04 12:44:39 32 4
gpt4 key购买 nike

我正在创建具有数百万个节点的树,但是当我切换到在树控件 (wx.TR_MULTIPLE) 上使用多选时,树上的操作变得更慢,我只单击以选择一个节点,这需要我几秒钟的时间。当我使用单选样式 (wx.TR_SINGLE) 时不会发生这种情况。

我试图不为任何节点设置数据并且没有使用任何事件,但它仍然很慢。
有没有办法在树控件上使用多选并且树仍然像单选一样快?

我在下面粘贴了修改后的演示代码:

import wx


class MyTree(wx.TreeCtrl):
def __init__(self, parent, id, pos, size, style):
wx.TreeCtrl.__init__(self, parent, id, pos, size, style)
self.Bind(wx.EVT_TREE_SEL_CHANGED, self.item_changed)

def item_changed(self, evt):
print(self.GetItemData(evt.GetItem()))


class TreePanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.tree = MyTree(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_HAS_BUTTONS | wx.TR_MULTIPLE)
self.root = self.tree.AddRoot('ROOT')
node1 = self.tree.InsertItem(self.root, 0, 'Node 1', data='node 1')
for i in range(1000000):
self.tree.PrependItem(node1, 'Sub node 1: ' + str(i), data='Sub node 1: ' + str(i))
self.tree.Expand(self.root)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.tree, 1, wx.EXPAND)
self.SetSizer(sizer)


class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None, title='TreeCtrl Demo')
panel = TreePanel(self)
self.Show()


if __name__ == '__main__':
app = wx.App(redirect=False)
frame = MainFrame()
app.MainLoop()

最佳答案

我也有同样的问题。但是当我改成单选的时候又变快了,但是这个时候我们不能选择多节点……嗯。
我认为这与框架内的 C 代码有关

关于python-3.x - wxPython TreeCtrl 非常慢,有数百万个节点(在多选树控件上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57566772/

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