[wxpython]分割窗口,设置滚动条

日常使用wxpython中,想显示多方面的内容,又不想要弹出这么多的窗口,于是想到了弄成一个大窗口,再将其分割成多个部分。

首先介绍的是窗口的分割

splitter = wx.SplitterWindow(self, -1)
#分成左面板和右面板
leftpanel = wx.Panel(splitter)
rightpanel = wx.Panel(splitter)
#100位左面板的尺寸
splitter.SplitVertically(leftpanel, rightpanel, 100)
#若想上下分割使用  SplitHorizontally

#设置左(上)面板最小值
splitter.SetMinimumPaneSize(80)
rightpanel.SetBackgroundColour(wx.Colour(200, 200, 200))

随后我们向左右panel添加部件即可。

若想分更多的窗口,在已分割的窗口基础上再次进行分割即可。

随后是滚动条的设置,为右窗口添加一个滚动条。

vbox2 = wx.BoxSizer(wx.VERTICAL)

self.scroller = wx.ScrolledWindow(rightpanel, -1)
self.scroller.SetScrollbars(1, 1, 50, 300)   #是否横向|竖向滚动条,小于该长度时出现滚动条
self.scroller.SetScrollRate(0, 20)        #滚动速度
self.pnl = wx.Panel(self.scroller)
self.ms = wx.BoxSizer(wx.VERTICAL)

a=wx.StaticText(self.pnl,-1,'sadqwe\ndsad')
self.ms.Add(a ,0, wx.ALL | wx.CENTER, 5)
b = wx.StaticText(self.pnl, -1, 'dadqwe\ndsad')
self.ms.Add(b, 1,  wx.ALL | wx.CENTER, 5)

# self.SetMinSize((300, 640))   #设置窗口的最小尺寸
c = wx.Button(self.pnl, -1, 'dad')
self.ms.Add(c, 1, wx.ALL | wx.CENTER, 5)
self.pnl.SetSizerAndFit(self.ms)
c.Bind(wx.EVT_BUTTON,self.dd)
self.ms.Fit(rightpanel)

vbox2.Add(self.scroller, 1, flag=wx.ALL | wx.EXPAND, border=5)
rightpanel.SetSizer(vbox2)

以下是全代码

import wx

class MsgWindow(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, pos=(640, 0))


        splitter = wx.SplitterWindow(self, -1)
        #分成左面板和右面板
        self.leftpanel = wx.Panel(splitter)
        rightpanel = wx.Panel(splitter)
        #100位左面板的尺寸
        splitter.SplitVertically(self.leftpanel, rightpanel, 100)
        #设置面板最小值
        splitter.SetMinimumPaneSize(80)
        rightpanel.SetBackgroundColour(wx.Colour(200, 200, 200))


        vbox2 = wx.BoxSizer(wx.VERTICAL)


        self.scroller = wx.ScrolledWindow(rightpanel, -1)
        self.scroller.SetScrollbars(1, 1, 50, 300)   #是否横向|竖向滚动条,小于该长度时出现滚动条
        self.scroller.SetScrollRate(0, 20)        #滚动速度
        self.pnl = wx.Panel(self.scroller)
        self.ms = wx.BoxSizer(wx.VERTICAL)

        a=wx.StaticText(self.pnl,-1,'sadqwe\ndsad')
        self.ms.Add(a ,0, wx.ALL | wx.CENTER, 5)
        b = wx.StaticText(self.pnl, -1, 'dadqwe\ndsad')
        self.ms.Add(b, 1,  wx.ALL | wx.CENTER, 5)
        # self.SetMinSize((300, 640))
        c = wx.Button(self.pnl, -1, 'dad')
        self.ms.Add(c, 1, wx.ALL | wx.CENTER, 5)
        self.pnl.SetSizerAndFit(self.ms)
        c.Bind(wx.EVT_BUTTON,self.dd)
        self.ms.Fit(rightpanel)

        vbox2.Add(self.scroller, 1, flag=wx.ALL | wx.EXPAND, border=5)
        rightpanel.SetSizer(vbox2)

        list2 = ['苹果', '橘子', '香蕉']
        # 设置列表
        lb2 = wx.ListBox(self.leftpanel, -1, choices=list2, style=wx.LB_SINGLE)
        # self.Bind(wx.EVT_LISTBOX, self.on_listbox, lb2)

        # 在左面板放个列表
        vbox1 = wx.BoxSizer(wx.VERTICAL)
        vbox1.Add(lb2, 1, flag=wx.ALL | wx.EXPAND, border=5)
        self.leftpanel.SetSizer(vbox1)
    def dd(self,e):
        self.leftpanel.Refresh()
if __name__ == '__main__':
    app = wx.App(redirect=False)
    msg_win = MsgWindow(None, -1, u'消息')
    msg_win.Show(True)
    app.MainLoop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值