滚动面板在 wxPython 中不起作用

Scrolled Panel not working in wxPython

 class Frame(wx.Frame):
     def __init__(self):
     wx.Frame.__init__(self, None,-1, "SCSM Observatory Log", size=(700, 700))

         panel = wxScrolledPanel.ScrolledPanel(self,-1, size=(800,10000))
         panel.SetupScrolling()

有人可以解释为什么这段代码不起作用吗?我没有收到任何错误,但好像滚动命令可能没有被初始化?

编辑:滚动有效,但我必须调整 window 的大小并使其变小以启用滚动功能。此外,它不会一直滚动到底部。

编辑 2:显然,滚动条只能滚动到框架的垂直尺寸。因此,如果我将帧 y 大小设置为 1000,它将滚动到 1000。唯一的问题是 window 那么大对于使用它的显示器来说太大了。有没有办法强制滚动条移动到大于框架尺寸的距离?例如,我希望 window 以 (700,700) 的大小打开,但我需要滚动条转到 1000。

按照对我有用的示例,不确定为什么它对您不起作用。我喜欢使用 sized_controls,因为它们可以很好地处理 sizer(在我看来)。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx
print(wx.VERSION_STRING)
import wx.lib.sized_controls as SC


class MyCtrl(SC.SizedPanel):
    def __init__(self, parent):
        super(MyCtrl, self).__init__(parent)

        tx1 = wx.TextCtrl(self)
        tx1.SetSizerProps(expand=True, proportion=1)
        tx2 = wx.TextCtrl(self)
        tx2.SetSizerProps(expand=True, proportion=1)


class MyFrame(SC.SizedFrame):
    def __init__(self, parent):
        super(MyFrame, self).__init__(parent,
                                       style=wx.RESIZE_BORDER|wx.DEFAULT_DIALOG_STYLE)

        pane = self.GetContentsPane()
        st = wx.StaticText(pane, label='Text')

        sp = SC.SizedScrolledPanel(pane)
        sp.SetSizerProps(expand=True, proportion=1)
        mc1 = MyCtrl(sp)
        mc2 = MyCtrl(sp)


if __name__ == '__main__':
    import wx.lib.mixins.inspection as WIT
    app = WIT.InspectableApp()
    frame = MyFrame(None)
    frame.Show()
    app.MainLoop()