面板内的 ScrolledPanel 未调整大小
我已经玩弄这个有一段时间了,但似乎无法弄清楚。 self.panel = wx.Panel(self, wx.ID_ANY)
我在不滚动的面板内有一个scrolledPanel。
self.panel = wx.Panel(self, wx.ID_ANY)
self.stepPanel = wxscrollpanel.ScrolledPanel(self.panel, -1, style=wx.EXPAND)
self.stepPanel.SetupScrolling(scrollToTop=False)
sizer = wx.BoxSizer(wx.VERTICAL)
self.stepPanel.SetSizerAndFit(sizer)
更新功能是这样的...
sizer = self.stepPanel.GetSizer()
# Add some widgets
self.stepPanel.SetSizerAndFit(sizer)
当用户单击按钮时,我稍后将小部件添加到大小调整器...我尝试过自动布局,FitInside(),Update() ...似乎无法滚动此stepPanel当我添加小部件时。
编辑:添加更多信息...
这里的想法是 self.panel 顶部有一个不滚动的区域(只是另一个面板),而下部部分滚动(self.stepPanel),但看起来 stepPanel生长在 self.panel 的可视区域之外
编辑:已解决,请参阅评论。
I've been toying with this for a while and just can't seem to figure it out.
self.panel = wx.Panel(self, wx.ID_ANY)
I have a scrolledPanel inside a panel that does not scroll.
self.panel = wx.Panel(self, wx.ID_ANY)
self.stepPanel = wxscrollpanel.ScrolledPanel(self.panel, -1, style=wx.EXPAND)
self.stepPanel.SetupScrolling(scrollToTop=False)
sizer = wx.BoxSizer(wx.VERTICAL)
self.stepPanel.SetSizerAndFit(sizer)
Update function goes like this ...
sizer = self.stepPanel.GetSizer()
# Add some widgets
self.stepPanel.SetSizerAndFit(sizer)
I add widgets to the sizer later on when the user clicks a button ... I've tried auto layout, FitInside(), Update() ... can't seem to scroll this stepPanel when I add widgets.
EDIT: Adding more info ...
The idea here is that the self.panel has an area at the top that does not scroll (just another panel), while the lower portion scrolls (self.stepPanel), but it appears that the stepPanel grows off of the viewable area of the self.panel
EDIT: Solved see comment.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我想我明白了。像往常一样,在添加或删除小部件时,您需要在父级上调用 Layout,在本例中,父级是正在获取新子级的滚动面板。您还必须调用SetupScrolling(),以便它可以重新计算有多少空间以及是否需要滚动条。这是一个在 Windows 上适用于我的示例:
I think I figured it out. As usual, when adding or deleting widgets, you need to call Layout on the parent, which in this case is the scrolled panel that is getting new children. You also have to call SetupScrolling() so it can recalculate how much space there is and whether or not it needs scrollbars. Here's an example that works for me on Windows: