作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建具有数百万个节点的树,但是当我切换到在树控件 (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/
我是一名优秀的程序员,十分优秀!