【发布时间】:2009-12-02 09:20:18
【问题描述】:
这是我的 GUI 的总体布局:
||Title||||||||||||||||||x|
| |words|
| |blah |
| . . . . | |
| | |
| . | |
| |bttn |
|||||||||||||||||||||||||||
基本上,有两个大窗格,左侧根据窗口大小调整大小,右侧保持不变。我想在右侧面板中放一些交互式小部件,例如复选框、单选按钮等,但是我想放入的东西的数量可能大于整个应用程序的大小。如果我想在 wxPython(或等效的 wxWidgets)中使该面板可滚动,我该怎么做?这是我的猜测:
class MyGUI(wx.Frame):
def __init__(self)
wx.Frame(None, -1)
main_panel = wx.Panel(self,-1)
main_sizer = wx.BoxSizer(wx.HORIZONTAL)
main_panel.SetSizer(main_sizer)
left_panel = wx.Panel(main_panel,-1)
main_sizer.Add(left_panel, 1, wx.EXPAND)
right_panel = wx.Panel(main_panel,-1)
right_sizer = wx.BoxSizer(wx.VERTICAL)
right_panel.SetSizer(right_sizer)
main_sizer.Add(right_panel, 0, wx.EXPAND)
for i in range(100):
right_sizer.Add(wx.CheckBox(right_panel, -1, "Happy Box"), 0, wx.EXPAND)
right_sizer.Add(wx.Button(right_panel, -1, "Grow!"),1, wx.EXPAND)
right_panel.Fit()
main_panel.Fit()
self.Layout()
self.Maximise()
self.Show()
现在我知道 wxPython 恰好有一个漂亮的小面板,叫做 ScrolledPanel,但出于某种原因,它似乎并没有真正认识到右侧面板有多大;也就是说,如果我调整 GUI 的大小,滚动条不会自行纠正。事实上,他们甚至一开始都不对。我该如何明智地处理这件事?
【问题讨论】: