Skip to main content
 首页 » 编程设计

python之如何获得 wx.ListCtrl 的宽度及其列名

2025年05月04日11Free-Thinker

我在 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()