2010-01-04 61 views
2

我對wxPython非常陌生,並且遇到了如下所示的問題。如何在wx python中設置面板的大小

我需要在一個框架內水平放置2個面板。

截至目前,我可以使用盒尺寸大小來放置2個面板。在一個面板中,我有一個圖像顯示,並在其他面板我有一些控件,如文本Ctrl或複選框和東西。

但是,當我調整框架的大小時,面板被調整大小。在調整框架大小時,圖像面板變得越來越小,開始向左手邊移動,最終變成左手邊的小點。

請運行我的代碼以查看幀大小調整後會發生什麼。

我需要幫助有關本...

請回復......

感謝。

Damodar

這是我的代碼。

import wx 

class ImagePanel(wx.Panel): 

    def __init__(self,parent,id,title,imagePath):    
     #========================================================= 
     # Create a panel 
     #========================================================= 
     wx.Panel.__init__(self,parent,id,style=wx.BORDER_THEME) 

     #========================================================== 
     # Display the .png image in the panel 
     #========================================================== 
     png = wx.Image(imagePath, wx.BITMAP_TYPE_ANY).ConvertToBitmap() 
     wx.StaticBitmap(self, -1, png, (0, 0), (png.GetWidth(),png.GetHeight())) 

class ControlPanel(wx.Panel): 

    def __init__(self,parent,id,title): 
     #========================================================= 
     # Create a panel 
     #========================================================= 
     wx.Panel.__init__(self,parent,id,size=(200,700),style=wx.BORDER_THEME) 
     cb1 = wx.CheckBox(self,-1,"Option 1") 
     cb2 = wx.CheckBox(self,-1,"Option 2") 
     cb3 = wx.CheckBox(self,-1,"Option 3") 
     cb4 = wx.CheckBox(self,-1,"Option 4") 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.AddSpacer(5,5) 
     sizer.Add(cb1) 
     sizer.AddSpacer(5,5) 
     sizer.Add(cb2) 
     sizer.AddSpacer(5,5) 
     sizer.Add(cb3) 
     sizer.AddSpacer(5,5) 
     sizer.Add(cb4) 
     sizer.AddSpacer(5,5)    
     self.SetSizer(sizer) 

     #========================================================== 
     # Shows the text control in the panel 
     #========================================================== 
     #wx.TextCtrl(self,-1,"This is a multiline text editor.") 

app = wx.PySimpleApp() 
frame = wx.Frame(None,-1,"Main Frame",size=(900,700), 
      style=wx.DEFAULT_FRAME_STYLE | wx.FULL_REPAINT_ON_RESIZE) 
box = wx.BoxSizer(wx.HORIZONTAL) 
box.Add(ImagePanel(frame,1,"Panel A","Artifacts_vs_Elaborations_36855.png")) 
box.AddSpacer(5,5) 
box.Add(ControlPanel(frame,2,"Panel B")) 
frame.SetSizer(box) 
frame.Show(1) 
app.MainLoop() 
+0

請發表您的代碼。 – 2010-01-04 23:26:36

+0

我已經在上面發佈了代碼。請回復。 謝謝 Damodar – Damodar 2010-01-05 02:18:13

+0

我已粘貼修改後的代碼。我也改寫了我的問題。 請回復 感謝 Damodar – Damodar 2010-01-07 01:52:17

回答

0

我已經弄清楚我的代碼出了什麼問題。我沒有處理resize事件,即EVT_RESIZE。現在它工作正常。

感謝

Damodar

相關問題