如何使用wx Python BoxSiz实现间距

2024-09-26 17:44:36 发布

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

我用wx.BoxSizer公司. 以下是源代码:'

import wx

# MAIN PROGRAM...
class MyFrame(wx.Frame):

     def __init__(self):

     wx.Frame.__init__(self, None, -1, "My Frame", size = (600, 600))

     mainPanel = wx.Panel(self)
     mainBox = wx.BoxSizer(wx.VERTICAL)

     header1 = wx.StaticText(mainPanel, label = 'Header1:')
     header2 = wx.StaticText(mainPanel, label = 'Header2:')

     panel1 = wx.Panel(mainPanel, size = (200, 200), style = wx.SUNKEN_BORDER)
     panel2 = wx.Panel(mainPanel, size = (200, 200), style = wx.SUNKEN_BORDER)

     box1 = wx.BoxSizer(wx.HORIZONTAL)
     box1.AddSpacer(50)
     box1.Add(header1, 0, wx.ALL, 5)
     box1.AddSpacer(50)
     box1.Add(header2, 0, wx.ALL, 5)

     box2 = wx.BoxSizer(wx.HORIZONTAL)
     box2.Add(panel1, 0, wx.ALL, 5)
     box2.Add(panel2, 0, wx.ALL, 5)

     mainBox.Add(box1, 0, wx.ALL, 5)
     mainBox.Add(box2, 0, wx.ALL, 5)

     mainPanel.SetSizer(mainBox)
     #self.Center()           


if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame()
    frame.Show(True)
    app.MainLoop()

    print 'Exiting...'

问题是,当我在每个页眉的左侧添加水平间距时,它也会在页眉和凹陷的边框header1和header2之间添加垂直间距。有没有办法只在标题前加上水平间距而不加垂直间距作为副作用? 谢谢。在

---编辑---

回答您的意见: 以下是程序的图片: enter image description here 简单的BoxSizer程序。。。在

绿色的“空间”是想要的空间,而红色的“空间”是不必要的副作用。我基本上只想要绿色的空间,但我不想要红色的空间,我希望页眉与两个面板齐平(就像直接在上面……)。 现在,我要做绝对定位,让它工作,我只是想知道你是否能让它与BoxSizer或其他布局管理器一起工作。。。 再次感谢。在


Tags: selfaddsize空间allframewx间距
2条回答

当你写作的时候

Add( ..., 0, wx.ALL, 5)

你在四周增加5个像素。在

所以:

^{pr2}$

在标题1下方添加5个小馅饼

box2.Add(panel1, 0, wx.ALL, 5)

在面板1上方添加5个像素

mainBox.Add(box1, 0, wx.ALL, 5)

在标题1下方添加5个像素(包含在方框1中)

 mainBox.Add(box2, 0, wx.ALL, 5)

在panel1上方添加5个像素(包含在方框2中)

总共增加了20个像素。在

如果你不想在垂直方向空白,不要写

Add( ..., 0, wx.ALL, 5)

相反,像这样

 mainPanel = wx.Panel(self)
 mainBox = wx.BoxSizer(wx.VERTICAL)

 header1 = wx.StaticText(mainPanel, label = 'Header1:')
 header2 = wx.StaticText(mainPanel, label = 'Header2:')

 panel1 = wx.Panel(mainPanel, size = (200, 200), style = wx.SUNKEN_BORDER)
 panel2 = wx.Panel(mainPanel, size = (200, 200), style = wx.SUNKEN_BORDER)

 box1 = wx.BoxSizer(wx.HORIZONTAL)
 box1.AddSpacer(50)
 box1.Add(header1)
 box1.AddSpacer(50)
 box1.Add(header2)

 box2 = wx.BoxSizer(wx.HORIZONTAL)
 box2.AddSpacer(5)
 box2.Add(panel1)
 box2.AddSpacer(10)
 box2.Add(panel2)

 mainBox.AddSpacer(5)
 mainBox.Add(box1)
 mainBox.Add(box2)

 mainPanel.SetSizer(mainBox)
 #self.Center()       

我找到了解决办法!在

而不是这样: 箱1。添加垫片(50)

这样做。。。 方框1。添加垫片((50,0))

真管用,耶! 谢谢。在

相关问题 更多 >

    热门问题