Заставить ширину столбца занимать доступное место в wxPython ListCtrl

У меня есть три столбца в моем wx.ListCtrl(size=(-1,200)). Я хотел бы, чтобы столбцы заполняли ширину ListCtrl после его создания. В идеале первый столбец может расширяться, чтобы заполнить дополнительное доступное пространство. Вторую и третью колонки не нужно расширять, и желательно, чтобы они не изменялись по ширине (в формате ocd ).

В настоящее время каждый столбец ListCtrl настроен с помощью (width=-1).

У меня есть ощущение, что я могу использовать этот раздел кода в своих интересах...

# Expand first column to fit longest entry item
list_ctrl.SetColumnWidth(0, wx.LIST_AUTOSIZE)

Псевдо -код (возможно):

# After wx.ListCtrl creation
Get width of ListCtrl control
Get width of each ListCtrl column
Calculate unused width of ListCtrl
Set first column width to original width + unused width

Добавлено:

Учитывая следующий пример, я не понимаю, как инициировать autowidthmixin. В настоящее время я пытаюсь поместить listctrl в foldpanel. foldpanel — это класс, и функция внутри класса создает listctrl. Я даже не уверен, что это можно сделать, учитывая структуру моего кода на данный момент!

class MyPanel(wx.Panel):

    def __init__(self, parent, dictionary):
        self.dictionary = dictionary
        """Constructor"""
        wx.Panel.__init__(self, parent)

        # Layout helpers (sizers) and content creation (setPanel)
        self.mainSizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(self.mainSizer)
        list_ctrl = self.setPanel()
        self.mainSizer.Add(list_ctrl, 0, wx.ALL | wx.EXPAND, 5)
        self.GetSizer().SetSizeHints(self)

    def setPanel(self):
        index = 0

        list_ctrl = wx.ListCtrl(self, size=(-1, 200),
                                style=wx.LC_REPORT | wx.BORDER_SUNKEN)

        list_ctrl.InsertColumn(0, "Variable", format=wx.LIST_FORMAT_LEFT, width=-1)
        list_ctrl.InsertColumn(1, "x", format=wx.LIST_FORMAT_RIGHT, width=-1)
        list_ctrl.InsertColumn(2, u"\u03D0", format=wx.LIST_FORMAT_RIGHT, width=-1)

        for key, value in self.dictionary.iteritems():
            list_ctrl.InsertStringItem(index, str(key))
            list_ctrl.SetStringItem(index, 1, ("%.2f" % value[0]))
            list_ctrl.SetStringItem(index, 2, ("%.8f" % value[1]))
            index += 1

        list_ctrl.SetColumnWidth(0, wx.LIST_AUTOSIZE)
        list_ctrl.SetColumnWidth(1, wx.LIST_AUTOSIZE)
        list_ctrl.SetColumnWidth(2, wx.LIST_AUTOSIZE)

        return list_ctrl
12
задан Michael Markieta 4 July 2012 в 13:50
поделиться