wxpython滑动面板_wxPython滚动面板滚动条大小问题

我正在构建的GUI有一个问题。我的应用程序目前由两个并排的笔记本组成,下面是一个终端/日志textcrll。左侧笔记本包含各种输入和输出面板,右侧笔记本包含一个或多个matplotlib图形。在

问题是,在左边的笔记本里,我有一个页面,它由3个垂直堆叠的面板组成。前两个具有标准控件(checkbox、textcrls和combobox)。在这些“设置”下面是一个wx.grid.grid它包含一些参数的I/O,用于在右侧的mpl图中绘制。这个网格可以变得相当大,所以我把它放到一个滚动面板中。在windows中一切正常,但是在linux上,我发现y峎u滚动条比可见面板的高度高(这样滚动条的下半部分没有显示)–如果这有意义的话。在

我放了一个小代码,有类似的问题-滚动条不是同一高度的实际面板。我做错什么了?在import wx

import wx.grid as grd

import wx.lib.scrolledpanel as scrolled

# A sample panel with some check box controls to take up space, within a

# static box sizer

class SamplePanel(wx.Panel):

def __init__(self,parent):

wx.Panel.__init__(self,parent)

grid = wx.GridBagSizer()

for i in (0,1):

grid.Add(wx.StaticText(self,label="Blah Blah: "),pos=(i,0))

grid.Add(wx.CheckBox(self),pos=(i,1))

box = wx.StaticBox(self, -1, "Some Settings: ")

box_sizer = wx.StaticBoxSizer(box,wx.VERTICAL)

box_sizer.Add(grid, 0, wx.ALL)

self.SetSizer(box_sizer)

self.Layout()

# A sample "table" of some parameters, let's say

class SampleGrid(grd.Grid):

def __init__(self,parent):

grd.Grid.__init__(self,parent)

self.CreateGrid(20,4)

self.SetColLabelValue(0,"Value")

self.SetColLabelValue(1,"Lo-Bound")

self.SetColLabelValue(2,"Hi-Bound")

self.SetColLabelValue(3,"Fit")

# The main panel:

class AnotherPanel(wx.Panel):

def __init__(self, parent):

wx.Panel.__init__(self,parent)

# main sizer for everything:

mainSizer = wx.BoxSizer(wx.VERTICAL)

# Add a few "sample panels":

mainSizer.Add(SamplePanel(self),0,wx.CENTER)

mainSizer.Add(SamplePanel(self),0,wx.CENTER)

mainSizer.Add(SamplePanel(self),0,wx.CENTER)

# Create the grid which will be scrollable:

scrolledPanel = scrolled.ScrolledPanel(self, size=(425,400))

table = SampleGrid(scrolledPanel)

sizer = wx.BoxSizer(wx.VERTICAL)

sizer.Add(table,1,wx.ALL|wx.EXPAND,5)

scrolledPanel.SetSizer(sizer)

scrolledPanel.Layout()

scrolledPanel.SetupScrolling(scroll_x=False)

# Put the scrolled panel into a static box:

box = wx.StaticBox(self,-1,"Parameters: ")

sizer2 = wx.StaticBoxSizer(box,wx.VERTICAL)

sizer2.Add(scrolledPanel,1,wx.EXPAND)

mainSizer.Add(sizer2,1,wx.EXPAND)

self.SetSizer(mainSizer)

self.Fit()

# The main frame:

class MainFrame(wx.Frame):

def __init__(self,parent,title):

wx.Frame.__init__(self,parent,-1,title=title, size=(850,500))

# Put 2 panels side by side:

sizer = wx.BoxSizer(wx.HORIZONTAL)

sizer.Add(AnotherPanel(self),1,wx.EXPAND)

sizer.Add(AnotherPanel(self),1,wx.EXPAND)

self.SetSizer(sizer)

self.SetAutoLayout(1)

# And, the app and mainloop:

app = wx.App(False)

frame = MainFrame(None, "Scroll Test")

frame.Show(True)

app.MainLoop()

提前感谢您的帮助!这也是我的第一个帖子,所以我提前为任何失礼道歉-我尽量避免任何!!!;)

编辑代码中的一些拼写错误,现在应该可以正常运行了

edit2在windows和linux上,我都有python2.7.3(Enthough Canopy发行版)和wxPython 2.8.10.1。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值