使用wxpython控件在面板中的位置

2024-10-03 04:33:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着把收音机放在中间,下面有个按钮,但不管我试过,收音机盒都放在画面的左上角,按钮甚至都不显示。 我不明白为什么会这样

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)

Tags: selfaddinitargs按钮nextcenterwx
1条回答
网友
1楼 · 发布于 2024-10-03 04:33:05

你忘了告诉你的面板是什么尺寸的。如果将self.SetSizer(topsizer)添加到类的__init__的末尾,它将如您所期望的那样工作。在

以下是完整的可运行版本:

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()

相关问题 更多 >