【问题标题】:Scrolling in a GUI Panel?在 GUI 面板中滚动?
【发布时间】: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 的大小,滚动条不会自行纠正。事实上,他们甚至一开始都不对。我该如何明智地处理这件事?

【问题讨论】:

    标签: wxpython wxwidgets


    【解决方案1】:

    wxScrolledWindow 可能是您正在寻找的。我在使用 wxWidgets 和动态改变大小的小部件方面遇到了很多问题,但您想要做的可能是调整 wxScrolledWindow 内的小部件的大小,然后在滚动窗口上调用 FitInside()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 2015-03-14
      • 2010-11-29
      • 1970-01-01
      相关资源
      最近更新 更多