Mam trzy kolumny w moim wx.ListCtrl(size=(-1,200))
. Chciałbym, aby kolumny wypełniły szerokość listy ListCtrl po jej utworzeniu. W idealnej sytuacji pierwsza kolumna może się rozwinąć, aby wypełnić dodatkową dostępną przestrzeń. Druga i trzecia kolumna nie muszą się rozszerzać, a najlepiej nie zmieniają szerokości (formatowanie ocd).Utwórz szerokość kolumny zajmującą wolne miejsce w wxPython ListCtrl
Obecnie każda kolumna ListCtrl jest konfigurowana za pomocą (width=-1)
.
Mam wrażenie, mogę skorzystać z tej części kodu na moją korzyść ...
# Expand first column to fit longest entry item
list_ctrl.SetColumnWidth(0, wx.LIST_AUTOSIZE)
Pseudo-kod (chyba):
# 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
Dodano:
Zważywszy w poniższym przykładzie, nie rozumiem, jak zainicjować autowidmixin. Obecnie próbuję umieścić listctrl w foldpanelu. Foldpanel jest klasą, a funkcja w klasie tworzy listę znaków. Nie jestem nawet pewien, czy da się to zrobić, biorąc pod uwagę strukturę mojego kodu w tej chwili!
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
Dodano dodatkowe informacje i fragment kodu. Nie mogę wymyślić, jak używać klasy mixin, biorąc pod uwagę układ mojego kodu atm. –