2015-10-04 2 views
0

Моя проблема заключается в поведении «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() 

ответ

0

Я считаю, что ваша проблема в том, что вы ничего не вкладывать в него.
Попробуйте изменить class MenuPanel к этому:

class MenuPanel(wx.Panel): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     """Constructor""" 
     wx.Panel.__init__(self, parent) 

     notebook = wx.Notebook(self) 
     page = wx.SplitterWindow(notebook) 
     text_ctrl = wx.TextCtrl(notebook, style=wx.TE_MULTILINE) 
     text_ctrl.SetValue("A whole bunch of text\nand then some more\nand finally some more") 
     menuSplitter = wx.SplitterWindow(page) 

     Color = ColorPanel(page) 
     Color.SetBackgroundColour((193,255,193)) 

     notebook.AddPage(text_ctrl, "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) 

Это добавляет в text_ctrl, который имеет некоторые данные и увидеть разницу!
Если вы собираетесь использовать AuiNoteBook, вы должны, вероятно, прочитать или перечитать это http://www.wiki.wxpython.org/AuiNotebook%20%28AGW%29
Хотя wx.Aui называет себя самой режущей кромкой, могут возникнуть проблемы, поскольку они не будут столь широко протестированы, как более обыденный стандарт версии, в этом случае wx.NoteBook.

+0

Резизация в порядке. Теперь проблема связана с небольшим зеленым (потому что я устанавливаю этот цвет фона) квадрат. Я попытался прокомментировать строку с панелью «Цвет», но это не улучшило ситуацию. Изображение есть. http://postimg.org/image/t2x5b61of/ – Damian

+0

Вы должны либо добавить 'Цвет' в sizer, либо вы все еще используете' Color' каким-то образом в ноутбуке. Если вы не нашли ошибку, отредактируйте сообщение с обновленным кодом. –

+0

Когда я блокирую цвет, результат по-прежнему остается квадратным, но по умолчанию. http://postimg.org/image/lunwrzs9b/ – Damian

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

  • Нет связанных вопросов^_^