我在 wx.Python 中工作,我想让我的 wx.ListCtrl 的列自动调整大小,即至少与列名的宽度一样宽,否则与最宽的元素或其列名一样宽.起初我认为 ListCtrlAutoWidthMixin 可能会这样做,但事实并非如此,所以看起来我可能必须自己做(如果有内置的方法,请纠正我!!!)
如何确定列表中的标题和元素将呈现多宽?
请您参考如下方法:
除了 jakepars 的回答:这应该检查标题是否更大,或者在列中占用最多空间的项目。不是优雅而是工作...
import wx
class Frame(wx.Frame):
def __init__(self, *args, **kw):
wx.Frame.__init__(self, *args, **kw)
self.list = wx.ListCtrl(self, style=wx.LC_REPORT)
items = ['A', 'b', 'something really REALLY long']
self.list.InsertColumn(0, "AAAAAAAAAAAAAAAAAAAAAAAA")
for item in items:
self.list.InsertStringItem(0, item)
self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
a = self.list.GetColumnWidth(0)
print "a " + str(a)
self.list.SetColumnWidth(0,wx.LIST_AUTOSIZE_USEHEADER)
b = self.list.GetColumnWidth(0)
print "b " + str(b)
if a>b:
print "a is bigger"
self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
app = wx.App(False)
frm = Frame(None, title="ListCtrl test")
frm.Show()
app.MainLoop()
