wx.TreeCtrl 的首选大小似乎是当树完全折叠时所有元素将适合的最小大小。是否有一种很好的(即跨平台兼容的)方法来计算所有扩展的树的宽度?我目前的解决方案是这样的:
def max_width(self):
dc = wx.ScreenDC()
dc.SetFont(self.GetFont())
widths = []
for item, depth in self.__walk_items():
if item != self.root:
width = dc.GetTextExtent(self.GetItemText(item))[0] + self.GetIndent()*depth
widths.append(width)
return max(widths) + self.GetIndent()
这在win32下很好用,但在linux下不好用。有没有办法让 TreeCtrl 本身告诉我它的大小,以便我可以覆盖它报告的大小?(总是返回最大扩展宽度)
编辑:请原谅我没有提供我上面使用的功能,但你明白了,我正在走树,获取每个标签的宽度,并返回最宽标签的总宽度(考虑缩进)