Моя проблема заключается в поведении «panelThree» в коде. Я покрасил его, и это показало мне, что пространство в моей панели действительно крошечное. Я не знаю, где я ошибся. Вторая вещь о поведении panelThree заключается в том, что когда вы максимизируете все приложение и возвращаетесь к размеру по умолчанию, он становится странным, может быть, потому, что у него нет фона, но он связан с предыдущим.Размер Wxpython вложенной панели и ее поведение при изменении размера всего приложения
Вот код:
import wx
import wx.aui
import wx.grid as gridlib
########################################################################
class ColorPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.SetBackgroundColour((193,255,193))
class MenuPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
notebook = wx.aui.AuiNotebook(self)
page = wx.SplitterWindow(notebook)
menuSplitter = wx.SplitterWindow(page)
Color = ColorPanel(page)
Color.SetBackgroundColour((193,255,193))
notebook.AddPage(page, "Colors Menu")
#notebook.AddPage(page, "Colors Menu2")
#notebook.AddPage(page, "Colors Menu2")
#notebook.AddPage(page, "Colors Menu2")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(notebook, 1, wx.EXPAND)
self.SetSizer(sizer)
########################################################################
class GridPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.grid = gridlib.Grid(self, style=wx.BORDER_SUNKEN)
self.grid.CreateGrid(25,25)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.grid, 1, wx.EXPAND)
self.SetSizer(sizer)
def Create (self,Rows,Cols):
self.grid.CreateGrid(Rows,Cols)
#def Fill (self,ValuesList)
#def Colour (self, ColorList) #Color list format [(Color,Value1,Value2=None)]
########################################################################
class MainPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
notebook = wx.aui.AuiNotebook(self)
page = wx.SplitterWindow(notebook)
notebook.AddPage(page, "Splitter")
hSplitter = wx.SplitterWindow(page)
panelOne = GridPanel(hSplitter)
panelTwo = GridPanel(hSplitter)
panelThree = MenuPanel(page)
hSplitter.SplitHorizontally(panelOne, panelTwo)
page.SplitVertically(hSplitter, panelThree)
hSplitter.SetSashGravity(0.5)
page.SetSashGravity(0.70)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(notebook, 1, wx.EXPAND)
self.SetSizer(sizer)
########################################################################
class MainFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Nested Splitters",
size=(800,600))
panel = MainPanel(self)
menubar = wx.MenuBar()
fileMenu = wx.Menu()
fileMenu.Append(wx.ID_NEW, '&New\tCtrl+N')
fileMenu.Append(wx.ID_OPEN, '&Open\tCtrl+O')
fileMenu.Append(wx.ID_SAVE, '&Save\tCtrl+S')
fileMenu.AppendSeparator()
menubar.Append(fileMenu, '&File')
self.SetMenuBar(menubar)
self.Show()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = wx.App(False)
frame = MainFrame()
app.MainLoop()
Резизация в порядке. Теперь проблема связана с небольшим зеленым (потому что я устанавливаю этот цвет фона) квадрат. Я попытался прокомментировать строку с панелью «Цвет», но это не улучшило ситуацию. Изображение есть. http://postimg.org/image/t2x5b61of/ – Damian
Вы должны либо добавить 'Цвет' в sizer, либо вы все еще используете' Color' каким-то образом в ноутбуке. Если вы не нашли ошибку, отредактируйте сообщение с обновленным кодом. –
Когда я блокирую цвет, результат по-прежнему остается квадратным, но по умолчанию. http://postimg.org/image/lunwrzs9b/ – Damian