2012-03-06 116 views
1
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兩個面板佈局

回答

2

我不確定你在問什麼。如果您使用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() 
+0

**如果您使用sizer,那麼您不能提供x/y座標來定位小部件**這是我沒有注意到的問題,謝謝!無論如何,我學習Python與您的博客~~ – shch1289 2012-03-07 03:56:35

+1

添加兩種不同的顏色清楚其中的兩個面板是^^ 'panel1.SetBackgroundColour(「#6f8089」)' – 2013-11-30 04:55:21

+1

沒錯,就是檢查面板定位的好方法之一。另一個是使用Widget檢測工具。 – 2013-12-02 14:43:32