나는 wxPython을 사용하여 앱을 만들었습니다. ListCtrl을 사용하여 일부 데이터를 표시하고 싶습니다. 그리고 최대 공간을 차지하는 열을 원합니다. 이것은 : 사용 가능한 최대 크기가 내가 가진 행으로 나뉘어집니다. (listctrl이 곳은 패널입니다) 나는이 시도했지만 작동하지 않습니다wxPython에서 창을 조정하는 ListCtrl
class VirtualListPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
width = self.GetParent().GetClientSize().width/5
coches = vehiculos()
gris = wx.Color(220,220,220)
self.lista = wx.ListCtrl(self, style=wx.LC_REPORT|wx.LC_HRULES|wx.LC_VRULES)
self.lista.InsertColumn(0, "Matricula", width=width)
self.lista.InsertColumn(1, "Tipo", width=width)
self.lista.InsertColumn(2, "Matriculacion", width=width)
self.lista.InsertColumn(3, "Ult. ITV", width=width)
self.lista.InsertColumn(4, "Prox. ITV", width=width)
i = 0
for data in coches:
index = self.lista.InsertStringItem(i, data[0])
self.lista.SetStringItem(index, 1, str(data[1]))
self.lista.SetStringItem(index, 2, str(data[2]))
self.lista.SetStringItem(index, 3, str(data[3]))
self.lista.SetStringItem(index, 4, str(prox(data[1],data[2],data[3])))
if((index+1) % 2 == 0):
self.lista.SetItemBackgroundColour(index,gris)
i += 1
self.sizer = wx.BoxSizer(wx.HORIZONTAL)
self.sizer.Add(self.lista, 1, wx.EXPAND|wx.ALL)
self.SetSizer(self.sizer)
self.Bind(wx.EVT_SIZE, self.OnResize)
def OnResize(self, event):
width = self.GetParent().GetClientSize().width/5
self.lista.SetColumnWidth(0, width)
self.lista.SetColumnWidth(1, width)
self.lista.SetColumnWidth(2, width)
self.lista.SetColumnWidth(3, width)
self.lista.SetColumnWidth(4, width)
자, 심지어 전체 창을 차지하지 않습니다, 그것은 단지 왼쪽 상단에 작은 사각형을 보여줍니다. 나는 "self.Bind (wx.EVT_SIZE ..."라인을 주석 처리하면, 전체 화면으로 표시되지만 열은 작다.
가 사전에 감사합니다!
여기서 달성하고자하는 것을 이해하지 못합니다. 열 너비 또는 목록 위젯 자체를 자동으로 정렬 하시겠습니까? 더 큰 모범을 보여줄 수 있습니까? 어쩌면 문제는 당신이 VirtualListPanel을 sizer에 추가하는 방법입니다. wx.lib.mixins.inspection.InspectionMixin을 사용해 레이아웃을 조사 할 수 있습니다. – uhz
내가 원하는 것은 열을 전체 크기로 조정하는 것입니다. 이것은 윈도우가 1000px 너비라면, 각 열을 1000/5px 너비 (현재는 5 열)로 만들고 싶습니다. 그리고 윈도우의 크기가 조절되면 열의 크기도 조정됩니다. – markmb