多个面板

2024-05-13 21:53:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我的程序有两个问题。下面的代码在生成3时生成两个面板。它生成panel1panel2没问题,但是panel3应该在panel2的右边,不应该出现。Panel1panel2是垂直拆分的,我试图对panel2panel3做同样的操作

我的第二个问题是如何在panel1下生成另一个面板,而不中断panel1panel2之间的拆分器,然后在panel1和下面新创建的面板之间创建拆分器?

import wx


class Panels(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)

        hbox = wx.BoxSizer(wx.HORIZONTAL)
        splitter = wx.SplitterWindow(self, -1)

        vbox1 = wx.BoxSizer(wx.VERTICAL)
        panel1 = wx.Panel(splitter, -1)
        panel12 = wx.Panel(panel1, -1, style=wx.BORDER_SUNKEN)
        st1 = wx.StaticText(panel12, -1, 'Panel 1', (5, 5))
        vbox1.Add(panel12, 1, wx.EXPAND)
        panel1.SetSizer(vbox1)

        vbox2 = wx.BoxSizer(wx.VERTICAL)
        panel2 = wx.Panel(splitter, -1)
        panel22 = wx.Panel(panel2, -1, style=wx.BORDER_RAISED)
        st2 = wx.StaticText(panel22, -1, 'Panel 2', (5, 5))
        vbox2.Add(panel22, 1, wx.EXPAND)
        panel2.SetSizer(vbox2)

        vbox3 = wx.BoxSizer(wx.VERTICAL)
        panel3 = wx.Panel(splitter, -1)
        panel32 = wx.Panel(panel3, -1, style=wx.BORDER_RAISED)
        st3 = wx.StaticText(panel32, -1, 'Panel 3', (5, 5))
        vbox3.Add(panel32, 1, wx.EXPAND)
        panel3.SetSizer(vbox3)

        hbox.Add(splitter, 1, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
        self.SetSizer(hbox)
        self.CreateStatusBar()
        splitter.SplitVertically(panel1, panel3)
        splitter.SplitVertically(panel2, panel3)
        self.Centre()
        self.Show(True)


    def ExitApp(self, event):
        self.Close()


app = wx.App()
Panels(None, -1, 'Panels')
app.MainLoop()

Tags: selfadd面板expandwxpanelsplitterpanels