使用wxnotebook的wxpython boxsizer问题

使用wxnotebook的wxpython boxsizer问题,python,wxpython,wxnotebook,boxsizer,Python,Wxpython,Wxnotebook,Boxsizer,我试图在notebookPage面板的垂直布局大小器中嵌套一个具有水平布局的大小器 我从中获得了一些灵感,但无法使其正常工作 而不是得到这个布局 吨位限制(单位:吨):[3000] [x] 在匹配类别上启用筛选器 面板中的一条线上所有东西都被弄坏了 我在Win7、Python2.6.6、WX2.8.12.1上运行这个 以下是相关代码: 导入系统 导入操作系统 导入wx 类主窗口(wx.Frame): 定义初始(自我、父母、头衔): self.ID_LOAD=101 self.ID\u SAVE=

我试图在notebookPage面板的垂直布局大小器中嵌套一个具有水平布局的大小器

我从中获得了一些灵感,但无法使其正常工作

而不是得到这个布局

吨位限制(单位:吨):[3000]
[x] 在匹配类别上启用筛选器

面板中的一条线上所有东西都被弄坏了


我在Win7、Python2.6.6、WX2.8.12.1上运行这个

以下是相关代码:

导入系统 导入操作系统 导入wx 类主窗口(wx.Frame): 定义初始(自我、父母、头衔): self.ID_LOAD=101 self.ID\u SAVE=102 #基于帧,因此设置帧 Frame.\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu self.CreateStatusBar() self.tab=wx.Notebook(self,-1,style=(wx.NB_顶部)) self.globPanel=wx.NotebookPage(self.tab,-1) self.orderPanel=wx.NotebookPage(self.tab,-1) self.slabPanel=wx.NotebookPage(self.tab,-1) self.tab.AddPage(self.globPanel,“全局过滤器”) self.tab.AddPage(self.orderPanel,“订单过滤器”) self.tab.AddPage(self.slabPanel,“板过滤器”) self.toolbar=wx.toolbar(self,wx.ID\u ANY,style=wx.TB\u水平) self.toolbar.SetToolBitmapSize((20,20)) 加载ico=wx.ArtProvider.GetBitmap(wx.ART\u文件\u打开,wx.ART\u工具栏,(20,20)) self.toolbar.AddLabelTool(self.ID\u LOAD,“LOAD”,LOAD\u ico,bmpDisabled=wx.NullBitmap,shortHelp='LOAD',longHelp=“将文本文件加载到过滤器编辑器”) save_ico=wx.ArtProvider.GetBitmap(wx.ART_文件保存,wx.ART_工具栏,(20,20)) self.toolbar.AddLabelTool(self.ID\u SAVE,“SAVE”,SAVE\u ico,bmpDisabled=wx.NullBitmap,shortHelp='SAVE',longHelp='SAVE过滤器编辑器的内容) self.toolbar.AddSeparator() self.tonagestatic=wx.StaticText(self.globPanel,wx.ID_ANY,“吨位限制(吨):”) self.tonageedit=wx.TextCtrl(self.globPanel,wx.ID_ANY,“30000”) 自吨位定尺=宽x.箱型定尺(宽x.水平) self.tonagesizer.Add(self.tonagestatic,flag=wx.EXPAND | wx.RIGHT | wx.LEFT | wx.TOP | wx.BOTTOM,border=10) self.tonagesizer.Add(self.tonageedit,flag=wx.EXPAND | wx.RIGHT | wx.LEFT | wx.TOP | wx.BOTTOM,border=10) self.filterCheck=wx.CheckBox(self.globPanel,wx.ID\u ANY,“在匹配类别上启用过滤器”) self.globSizer=wx.BoxSizer(wx.VERTICAL) self.globSizer.Add(self.tonagesizer) self.globSizer.Add(wx.StaticLine(self),0,wx.EXPAND) self.globSizer.Add(self.filterCheck,0,wx.EXPAND) self.globPanel.SetSizer(self.globSizer) self.sizer=wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.toolbar,0,wx.EXPAND) self.sizer.Add(wx.StaticLine(self)、0、wx.EXPAND) self.sizer.Add(self.tab,1,wx.EXPAND) 自调整器(自调整器) self.Layout() self.toolbar.Realize() #展示它!!! 自我展示(1) def main(): app=wx.PySimpleApp() 视图=主窗口(无,“输入过滤器”) app.MainLoop() 如果名称=“\uuuuu main\uuuuuuuu”: main() 这样更好一些,但我没有得到静态行,只显示checkox标签的第一个字符

self.tonagestatic=wx.StaticText(self.globPanel,wx.ID_ANY,“吨位限制(吨):”)
self.tonageedit=wx.TextCtrl(self.globPanel,wx.ID_ANY,“30000”)
自吨位定尺=宽x.箱型定尺(宽x.水平)
self.tonagesizer.Add(self.tonagestatic,0,flag=wx.EXPAND | wx.ALL)
self.tonagesizer.Add(self.tonageedit,0,flag=wx.EXPAND | wx.ALL)
self.filterCheck=wx.CheckBox(self.globPanel,wx.ID\u ANY,“在匹配类别上启用过滤器”)
self.globSizer=wx.BoxSizer(wx.VERTICAL)
self.globSizer.Add(self.tonagesizer)
self.globSizer.Add(wx.StaticLine(self.globPanel),0,wx.EXPAND)
self.globSizer.Add(self.filterCheck,0,wx.EXPAND)
self.globPanel.SetSizer(self.globSizer)
self.sizer=wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.toolbar,0,wx.EXPAND)
self.sizer.Add(wx.StaticLine(self)、0、wx.EXPAND)
self.sizer.Add(self.tab,1,wx.EXPAND)
自调整器(自调整器)
self.globPanel.Layout()
self.Layout()
self.toolbar.Realize()
#展示它!!!
自我展示(1)

我刚刚在windows上运行了它,如果在
self.Layout()
行之后在全局面板上调用
.Layout()

您还可以使用
wx.ALL
,它与右、左、上、下相同


编辑:我很好奇为什么会有这种奇怪的行为,并进一步研究了一下。我看了看我用过笔记本的地方,我总是用面板来做页面。如果您将NotebookPages更改为Panel,您可以取消
布局调用,它可以按预期工作。

我刚刚在windows上运行了它,如果您在globPanel上的
self.Layout()
行后调用
布局()
,则应该可以将大小调整器调整为正确的形状:)

您还可以使用
wx.ALL
,它与右、左、上、下相同


编辑:我很好奇为什么会有这种奇怪的行为,并进一步研究了一下。我看了看我用过笔记本的地方,我总是用面板来做页面。如果您将记事本页面更改为面板,您可以取消
布局调用,并且它可以按预期工作。

除了静态行显示在错误的位置之外(我认为这是mac笔记本电脑大小的问题),这两个项目显示在彼此上方。对我来说,OSX 10.7 py2.7 wx2.8.12.1显示正常。我在Win7、python 2.6.6、wx 2.8.12.1上运行它。除了静态行显示在错误的位置之外,我认为这是mac笔记本电脑大小的问题,这两项显示在彼此上方。它看起来对我来说是正常显示的OSX 10.7 py2.7 wx2.8.12.1我在Win7、python 2.6.6、wx 2.8.12.1上运行它