滚动面板在 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()
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()