2017-06-08 11 views
0

ラジオボックスを中央とその下のボタンに配置しようとしていますが、ラジオボックスはフレームの左上隅に配置されていてボタンは表示されません。 。 これはwxpythonを使用したパネル内のウィジェットの位置

class Panelchoose(wx.Panel): 
    """ 
    panel for calculating separately without saving 
    """ 
    def __init__(self ,*args, **kw): 
     super(Panelchoose, self).__init__(*args, **kw) 
     self.SetBackgroundColour('#48C9B0') 
     topsizer=wx.BoxSizer(wx.VERTICAL) 
     radiosizer=wx.BoxSizer(wx.VERTICAL) 
     btnsizer=wx.BoxSizer(wx.HORIZONTAL) 

     lblist=['calculationGrid','calculations','xyz2comcat'] 
     self.rbox=wx.RadioBox(self,label="choose from the models below: ", 
           choices=lblist,majorDimension=3, 
           style=wx.RA_SPECIFY_ROWS) 


     btn_next=wx.Button(self ,label=" NEXT ") 
     #self.Bind(wx.EVT_BUTTON,self.next_, btn_next) 

     topsizer.Add(self.rbox,0,wx.CENTER|wx.ALIGN_CENTER_VERTICAL,10) 
     btnsizer.Add(btn_next,0,wx.ALIGN_CENTER_VERTICAL|wx.BOTTOM|wx.EXPAND,5) 

     topsizer.Add(btnsizer,4,wx.CENTER|wx.BOTTOM,10) 

答えて

0

あなたのそのサイザーが何であったか、あなたのパネルを伝えるためにして忘れてしまった部分が起こっている理由を私は理解していません。クラス__init__の最後にself.SetSizer(topsizer)を追加すると、期待どおりに機能します。 | `立派に見える

import wx 


class Panelchoose(wx.Panel): 
    """ 
    panel for calculating separately without saving 
    """ 
    def __init__(self ,*args, **kw): 
     super(Panelchoose, self).__init__(*args, **kw) 
     self.SetBackgroundColour('#48C9B0') 
     topsizer=wx.BoxSizer(wx.VERTICAL) 
     radiosizer=wx.BoxSizer(wx.VERTICAL) 
     btnsizer=wx.BoxSizer(wx.HORIZONTAL) 

     lblist=['calculationGrid','calculations','xyz2comcat'] 
     self.rbox=wx.RadioBox(self,label="choose from the models below: ", 
           choices=lblist,majorDimension=3, 
           style=wx.RA_SPECIFY_ROWS) 


     btn_next=wx.Button(self ,label=" NEXT ") 
     #self.Bind(wx.EVT_BUTTON,self.next_, btn_next) 

     topsizer.Add(self.rbox,0,wx.CENTER|wx.ALIGN_CENTER_VERTICAL,10) 
     btnsizer.Add(btn_next,0,wx.ALIGN_CENTER_VERTICAL|wx.BOTTOM|wx.EXPAND,5) 

     topsizer.Add(btnsizer,0,wx.CENTER|wx.BOTTOM,10) 

     self.SetSizer(topsizer) 

if __name__ == '__main__': 
    app = wx.App(False) 
    frame = wx.Frame(None, title='Test') 
    Panelchoose(parent=frame) 
    frame.Show() 
    app.MainLoop() 
+0

' topsizer.Add(wx.BOTTOM、10 btnsizer、0、wx.CENTER):

ここでフル実行可能なバージョンです! –

+0

私がやろうとしていたのは、何が間違っているのかをOPに見せていただけです。 –

+0

それは今解決された私は欠けている部分を理解していただきありがとうございます – muna

関連する問題