2014-04-30 3 views
1

Я использую wxPython для создания gui. В настоящее время у меня есть панель меню и три панели. Я хочу, чтобы сетка отображалась во второй панели, когда я нажимаю кнопку. Однако. Когда я нажимаю на кнопку, все, что я получаю, это маленький серый прямоугольник.wxPython не показывает сетку

Вот код для кнопки:

self.Bind(wx.EVT_BUTTON, self.OnCo, id=self.submit.GetId()) 

и вот код для события «онко» при нажатии на кнопку:

def OnCo(self, e): 

    #to get rid of stuff that was previously in the panel 
    for child in self.panel2.GetChildren(): 
     child.Destroy() 
    for child in self.panel3.GetChildren(): 
     child.Destroy() 

    mygrid = gridlib.Grid(self.panel2, -1) 
    mygrid.CreateGrid(500,7) 
    sizer = wx.BoxSizer(wx.VERTICAL) 
    sizer.Add(mygrid, -1, wx.EXPAND) 
    self.panel2.SetSizer(sizer) 
    mygrid.SetColLabelValue(0, 'S') 
    mygrid.SetColLabelValue(1, 'PB') 
    mygrid.SetColLabelValue(2, 'P') 
    mygrid.SetColLabelValue(3, 'T') 
    mygrid.SetColLabelValue(4, 'D') 

Любая помощь на том, как я могу получить моя сетка, чтобы показать? Благодарю.

ответ

0

Возможно, что сетка не правильная калибровка; ваши предметы могут быть там, но это не показывает все. После изменения значений в сетке я всегда проверяю его размер. Я обычно просто добавить простую функцию к классу так:

def SetGridSize(self): self.mygrid.AutoSizeRows() self.mygrid.AutoSizeColumns() self.sizer.Fit(self)

, а затем вызвать SetGridSize() всякий раз, когда я изменить значение, чтобы убедиться, что все это показывает на экране вместо того, чтобы отрезать.

Конечно, вам придется немного приспособить его к вашим именам и еще что-то еще. Эта реализация предполагает, что класс является объектом wx.Frame.

Смежные вопросы