【问题标题】:wxpython two panel layoutwxpython 两个面板布局
【发布时间】:2012-03-06 04:45:55
【问题描述】:
import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title,size=(250, 250))

        panel1 = wx.Panel(self, -1,pos=(0,100),size=(100,100))
        button1 = wx.Button(panel1, -1, label="click me")

        panel2 = wx.Panel(self, -1,pos=(0,200))
        button2 = wx.Button(panel2, -1, label="click me")
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(panel1,0,wx.EXPAND|wx.ALL,border=10)
        sizer.Add(panel2,0,wx.EXPAND|wx.ALL,border=10)

        self.SetSizer(sizer)



class MyApp(wx.App):
     def OnInit(self):
         frame = MyFrame(None, -1, 'frame')
         frame.Show(True)
         return True

app = MyApp(0)
app.MainLoop()

我想在 wxpython 中测试两个面板布局,我更改了 pos(x,y) 但它不起作用。所以 如何布局只使用 boxsizer 和面板?

【问题讨论】:

    标签: wxpython


    【解决方案1】:

    我不确定你在问什么。如果您使用 sizer,则无法提供 x/y 坐标来定位小部件。如果您只是想知道为什么面板看起来很奇怪,那是因为您在它们下面没有普通面板。下面的代码是解决这个问题的一种方法。另一种方法是在将它们添加到 BoxSizer 时,将比例大于零的每个面板提供给它们。

    import wx
    
    class MyFrame(wx.Frame):
        def __init__(self, parent, id, title):
            wx.Frame.__init__(self, parent, id, title,size=(250, 250))
    
            topPanel = wx.Panel(self)
    
            panel1 = wx.Panel(topPanel, -1,pos=(0,100),size=(100,100))
            button1 = wx.Button(panel1, -1, label="click me")
    
            panel2 = wx.Panel(topPanel, -1,pos=(0,200))
            button2 = wx.Button(panel2, -1, label="click me")
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(panel1,0,wx.EXPAND|wx.ALL,border=10)
            sizer.Add(panel2,0,wx.EXPAND|wx.ALL,border=10)
    
            topPanel.SetSizer(sizer)
    
    
    
    class MyApp(wx.App):
         def OnInit(self):
             frame = MyFrame(None, -1, 'frame')
             frame.Show(True)
             return True
    
    app = MyApp(0)
    app.MainLoop()
    

    【讨论】:

    • 如果您使用大小调整器,则无法提供 x/y 坐标来定位小部件这是我没有注意到的问题,谢谢!不管怎样,我在你的博客上学习 python ~~
    • 添加两种不同的颜色可以清楚地显示两个面板的位置^^ panel1.SetBackgroundColour('#6f8089')
    • 是的,这是检查面板定位的一种好方法。另一种是使用小部件检查工具。
    • 您在代码末尾缺少app.MainLoop() :)
    猜你喜欢
    • 2018-07-03
    • 2017-07-10
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2011-02-07
    • 2017-11-23
    相关资源
    最近更新 更多