python wxpython 界面弹窗带上下滚动拉条
时间: 2023-07-05 20:27:30 浏览: 311
你可以使用wx.ScrolledWindow类来实现带有上下滚动条的窗口。首先,你需要创建一个wx.ScrolledWindow对象,并将你的内容放置在它的子窗口中。然后,你可以使用wx.ScrollBar函数来添加水平和垂直滚动条。下面是一个示例代码:
```python
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(300, 200))
# 创建一个wx.ScrolledWindow对象
self.scroll = wx.ScrolledWindow(self, size=(300, 200))
# 创建一个垂直滚动条
self.vscroll = wx.ScrollBar(self.scroll, style=wx.SB_VERTICAL)
self.scroll.SetScrollbars(0, 10, 0, 100) # 设置滚动条的范围
# 在wx.ScrolledWindow中添加内容
self.panel = wx.Panel(self.scroll)
sizer = wx.BoxSizer(wx.VERTICAL)
for i in range(20):
text = wx.StaticText(self.panel, label='This is line %d.' % i)
sizer.Add(text, 0, wx.ALL, 5)
self.panel.SetSizer(sizer)
# 将wx.ScrollBar添加到wx.ScrolledWindow中
self.scroll.Bind(wx.EVT_SCROLL, self.OnScroll)
self.scroll.Bind(wx.EVT_SIZE, self.OnSize)
# 显示窗口
self.Show(True)
# 滚动条滚动事件处理函数
def OnScroll(self, event):
self.scroll.Scroll(0, self.vscroll.GetThumbPosition())
# 窗口大小改变事件处理函数
def OnSize(self, event):
self.vscroll.SetScrollbar(0, 10, 0, self.panel.GetSize().height)
event.Skip()
app = wx.App(False)
frame = MyFrame(None, 'Scrolling Window')
app.MainLoop()
```
上面的代码创建了一个带有垂直滚动条的wx.ScrolledWindow对象,并将一些静态文本添加到其中。在滚动条滚动事件处理函数中,我们使用Scroll()函数来移动wx.ScrolledWindow对象的子窗口。在窗口大小改变事件处理函数中,我们使用SetScrollbar()函数来设置滚动条的范围。
阅读全文