2010-01-04 3 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

코드를 게시하시기 바랍니다. –

+0

상단에 코드를 게시했습니다. 회신 해주십시오. 감사합니다. Damodar – Damodar

+0

수정 된 코드를 붙여 넣었습니다. 또한 나는 내 질문에 대해 다시 말 하였다. 이 감사 Damodar을 회신 해 주시기 바랍니다 – Damodar

답변

0

내 코드가 잘못되었음을 알아 냈습니다. 크기 조정 이벤트 (EVT_RESIZE)를 처리하지 않았습니다. 이제는 잘 작동합니다.

감사

Damodar

관련 문제