在wxpython中向StaticBox添加元素

2024-10-06 16:19:32 发布

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

我正在学习wxpython在python中做图形界面。 我想要的界面应该有2个staticbox和一个按钮,应该在第一个staticbox中。我想要这样的东西:

|----------------------------------------------|
|                                              |
|  #####                                       |
|                                              |
|                                              |
|----------------------------------------------|
|                                              |
|                                              |
|                                              |
|----------------------------------------------|

我不知道为什么我把按钮放在左上角,我怀疑我把它配置错了,这就是为什么它在staticbox之外。我得到了这样的东西:

^{pr2}$

我的代码是:

class Frame(wx.Frame):
def __init__(self, title):
    wx.Frame.__init__(self, None, title=title, pos=(150,150), size=(600,600))

    # Defining panel
    panel = wx.Panel(self,-1)

    # Elements of the frame
    staticBoxUno = wx.StaticBox(panel, -1, 'Uno:', pos=wx.Point(-1, -1), size=wx.Size(600, 150), style=0)
    staticBoxUno.SetOwnFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False, 'MS Shell Dlg'))

    staticBoxDos = wx.StaticBox(panel, -1, 'Dos:', pos=wx.Point(-1, -1), size=wx.Size(600, -1), style=0)
    staticBoxDos.SetOwnFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False, 'MS Shell Dlg'))

    buttonUno = wx.Button(panel, -1, "OK")

    #Initialization Sizers
    boxMadre = wx.BoxSizer(wx.VERTICAL)
    boxMadre.AddSpacer(5)
    boxMadre.Add(staticBoxUno, 0, wx.EXPAND|wx.ALL, 0)
    boxMadre.AddSpacer(5)
    boxMadre.Add(staticBoxDos, 1, wx.EXPAND|wx.ALL, 0)

    staticBoxUnoSizer = wx.StaticBoxSizer(staticBoxUno, wx.VERTICAL)
    staticBoxUnoSizer.Add(buttonUno, -1, wx.EXPAND | wx.ALL, 5)

    panel.SetSizer(boxMadre)
    panel.Layout()

app = wx.App(redirect=True)   # Error messages go to popup window
top = Frame("<<project>>")
top.Show()
app.MainLoop()

我想问题是当我试图将按钮添加到StaticBoxUno时,但我不知道到底是什么失败了

非常感谢! 巴勃罗


Tags: posselfaddsizetitleall按钮frame
1条回答
网友
1楼 · 发布于 2024-10-06 16:19:32

更改代码如下:

    # …
    buttonUno = wx.Button(panel, -1, "OK")

    staticBoxUnoSizer = wx.StaticBoxSizer(staticBoxUno, wx.VERTICAL)
    # use 0 instead of -1 as proportion in sizer
    staticBoxUnoSizer.Add(buttonUno, 0, wx.EXPAND|wx.ALL, 5)

    # …
    # add sizer instead of StaticBox!
    boxMadre.Add(staticBoxUnoSizer, 0, wx.EXPAND|wx.ALL, 0)

相关问题 更多 >