Никогда раньше не программировал GUI, а тут вот понадобилось наговнокодить небольшой редактор табличных данных. Непродолжительное гугление привело к выбору wxPython, но вот возникла проблема, при открытии файла создаю закладку на Notebook, на нее сайзер, на него сетку(Grid) с ключом wx.EXPAND. Но сетка не ресайзится по размеру окна, то есть если я запускаю приложение, открываю файл, потом разворачиваю окно на весь экран и сетка остается того же размера что и была. Как сделать так чтоб размер сетки менялся при изменении размеров окна?
import wx
import wx.grid as grid_
class MyFrame(wx.Frame):
def __init__(self, parent=None, id=wx.ID_ANY, pos=wx.DefaultPosition, title='Editor'):
wx.Frame.__init__(self, parent, id, title, pos, (600,600))
# Menu
menuBar = wx.MenuBar()
menu = wx.Menu()
m_eopen = menu.Append(wx.ID_ANY, "&Open file")
m_exit = menu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Close window and exit program.")
menuBar.Append(menu, "&File")
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.OnOpen, m_eopen)
self.Bind(wx.EVT_MENU, self.OnClose, m_exit)
# Notebook
self.notebook = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )
def OnOpen(self, event):
dirname = " "
dlg = wx.FileDialog(self, "Choose a file to open", dirname, " ", "*.*", wx.OPEN)
if dlg.ShowModal() == wx.ID_OK:
filename = dlg.GetFilename()
dirname = dlg.GetDirectory()
# Create new tab
tab_panel = wx.Panel( self.notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
self.notebook.AddPage( tab_panel, filename, False )
extract_tab = wx.Panel( tab_panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
# Create Grid
data_grid = grid_.Grid( tab_panel, wx.ID_ANY, wx.DefaultPosition, tab_panel.GetSize(), wx.HSCROLL|wx.VSCROLL )
data_grid.CreateGrid( 5, 100)
grid_sizer = wx.BoxSizer( wx.HORIZONTAL )
grid_sizer.Add(data_grid, 1 , wx.EXPAND |wx.ALL)
grid_sizer.FitInside(extract_tab)
extract_tab.SetSizer(grid_sizer)
extract_tab.Layout()
def OnClose(self, event):
dlg = wx.MessageDialog(self,
"Do you really want to close this application?",
"Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION)
if dlg.ShowModal() == wx.ID_OK:
self.Destroy()