чтобы добить эту тему задам еще один вопрос связанную с гридами. А именно обращение к некоторым областям. Кидаю рисунок чтоб было понятно о чем речь
Картинка (hdd.tomsk.ru)На рисунке видны 2 области к которым я никак не могу получить доступНе уверен что правильно понимаю суть работы грида, но почему когда устанавливаешь 7 строк и 4 столбца, он добавляет невидимую пустую строку справа и снизу соответственно? В итоге получаем 8 строк и 5 столбцов. Я предполагаю чтоб иметь возможность в дальнейшем изменять количество строк\столбцов (с данными) у грида. Ну да ладно
Но тут самое интересное. Цель. Обратится к этой области чтоб закрасить background соответствующим цветом. Пытался запихнуть данный грид в вертикальный сайзер и расстянуть до правой стороны, так же в горизонтальный сайзер и растянуть до низа. Но ниче не выходит, он не реагирует свойства Add
self.gridsizer.Add(self.grid, 1, wx.EXPAND)
Даже в гридСайзер кидал грид но ни к чему не привело
Код для большей ясности (часть кода относится к панели куда добавляется грид):
class MainPanelAddPeople(wx.Panel):
def __init__(self, parent, ID=-1, label="", pos=wx.DefaultPosition, size=(380,250)):
wx.Panel.__init__(self, parent, ID, pos, size) #, wx.NO_BORDER
self.MainWindow = parent
self.SetBackgroundColour('#AACC44')
gridLabels = ["Имя", "Пароль", "Статус", "Права"]
self.grid = wx.grid.Grid(self, size=(380, 300))#, size=size
self.grid.CreateGrid(7, 4)
for row in range(6):
for col in range(4):
self.grid.SetCellValue(row, col, "cell (%d,%d)" % (row, col))
self.grid.SetCellBackgroundColour(row, col, '#AACC44')
self.grid.SetCellBackgroundColour(5, 2, '#AA2244')
self.grid.SetCellBackgroundColour(6, 0, '#AA2244')
for col in range(len(gridLabels)):
self.grid.SetColLabelValue(col, gridLabels[col])
self.grid.SetLabelBackgroundColour('#AACC44')
self.grid.SetCellHighlightColour('#33AA22')
#self.grid.SetCellRenderer(3, 3, wx.grid.GridCellBoolRenderer)
self.grid.SetRowLabelSize(0)
self.grid.SetColLabelSize(20)
self.gridsizer = wx.GridSizer()
self.gridsizer.Add(self.grid, 1, wx.EXPAND)
self.SetSizer(self.gridsizer)
self.Layout()
#self.sizer = wx.BoxSizer(wx.HORIZONTAL)
#self.sizer.Add(self.grid, 1, wx.EXPAND)
Ну раз не получается закрасить данную область то пробовал дальше растянуть длину ячеек чтоб спрятать этот fail столбец
Написал много. Конкретизирую цель, мне надо либо закрасить эти области (не могу обратится к ним), либо спрятать, типа растянуть до правой границы этот грид. Так же растянуть вниз.
НО при увеличении ширины ячейки всплывает горизонтальный бегунок, который не к месту.
Даже если как то получится спрятать справа этот столбец то непонятно как быть с нижним. Т.к. предполагается добавлять снизу грида еще виджеты, аля кнопки. Конечно можно по извращаться, типа сделать 2 панели добавить их в вертикальный сайзер и дальше прятать низ грида за границей верхней панели, Но тут также появится вертикальный бегунок который мне не нужен.
Идеи закончились, надеюсь вы пнете меня в нужном направлении )