首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxpython sizer扩展问题

wxpython sizer扩展问题
EN

Stack Overflow用户
提问于 2016-03-08 16:41:35
回答 1查看 34关注 0票数 0

我有一个屏幕,它有6个网格,如下所示:

我要加一个第7格。这会使屏幕看起来像:

不过,我希望屏幕是:

我试过用柔性网格来做,但它不起作用。

这是我的密码:

代码语言:javascript
复制
sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
sizer_2.AddSpacer(10)

sizer_4 = wx.BoxSizer(wx.VERTICAL)
sizer_4.Add(self.grid1, 1, wx.EXPAND, 0)
sizer_4.AddSpacer(20)
sizer_4.Add(self.grid4, 1, wx.EXPAND, 0)
sizer_4.AddSpacer(20)
sizer_4.Add(self.grid7, 1, wx.EXPAND, 0)  


sizer_5 = wx.BoxSizer(wx.VERTICAL)
sizer_5.Add(self.grid2, 1, wx.EXPAND, 0)
sizer_5.AddSpacer(20)
sizer_5.Add(self.grid5, 1, wx.EXPAND, 0)

sizer_6 = wx.BoxSizer(wx.VERTICAL)
sizer_6.Add(self.grid3, 1, wx.EXPAND, 0)
sizer_6.AddSpacer(20)
sizer_6.Add(self.grid6, 1, wx.EXPAND, 0)      


sizer_3=wx.BoxSizer(wx.HORIZONTAL)
sizer_3.AddSpacer(20)
sizer_3.Add(sizer_4, 1, wx.EXPAND, 0)
sizer_3.AddSpacer(20)
sizer_3.Add(sizer_5, 1, wx.EXPAND, 0)
sizer_3.AddSpacer(20)
sizer_3.Add(sizer_6, 1, wx.EXPAND, 0)


sizer_1= wx.BoxSizer(wx.VERTICAL)
sizer_1.AddSpacer(10)
sizer_1.Add(sizer_2)
sizer_1.AddSpacer(20)
sizer_1.Add(sizer_3, 1, wx.EXPAND, 0)

self.SetSizer(sizer_1)
self.Layout()

我能做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-08 20:49:32

我不喜欢栅格筛,因为我觉得它们很让人困惑。所以我通常拿着这样的东西,在不同的群体周围画盒子。这些框表示BoxSizers。一旦我这样做了,我知道该做什么,并相应地编写我的代码。我要说的是:

代码语言:javascript
复制
import wx

########################################################################
class GenericPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent, color):
        """Constructor"""
        wx.Panel.__init__(self, parent, size=(200, 100))
        self.SetBackgroundColour(color)


########################################################################
class MainPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)

        left_sizer = wx.BoxSizer(wx.VERTICAL)
        for i in range(3):
            panel = GenericPanel(self, 'red')
            left_sizer.Add(panel, 0, wx.ALL, 5)

        top_right_sizer = wx.BoxSizer(wx.HORIZONTAL)
        for i in range(2):
            panel = GenericPanel(self, 'green')
            top_right_sizer.Add(panel, 0, wx.ALL, 5)

        bottom_right_sizer = wx.BoxSizer(wx.HORIZONTAL)
        for i in range(2):
            panel = GenericPanel(self, 'blue')
            bottom_right_sizer.Add(panel, 0, wx.ALL, 5)

        stack_sizer = wx.BoxSizer(wx.VERTICAL)
        stack_sizer.Add(top_right_sizer)
        stack_sizer.Add(bottom_right_sizer)

        main_sizer = wx.BoxSizer(wx.HORIZONTAL)
        main_sizer.Add(left_sizer)
        main_sizer.Add(stack_sizer)
        main_sizer.AddStretchSpacer(prop=1)
        self.SetSizer(main_sizer)


########################################################################
class MainFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title='Boxes', size=(700,400))
        panel = MainPanel(self)
        self.Show()

if __name__ == '__main__':
    app = wx.App(False)
    frame = MainFrame()
    app.MainLoop()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35873003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档