wx.静态箱不能正常工作

2024-10-06 12:31:30 发布

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

我正在学习wxPython库,现在我尝试使用wx.StaticBox和{}。如文档https://wxpython.org/Phoenix/docs/html/wx.StaticBoxSizer.html#wx-staticboxsizer中所述,建议将元素作为子元素添加到staticbox中。我做了所有的事情,表面上,就像文档中的例子,但是结果是一堆叠加的元素,甚至没有staticbox行。有什么问题,如何在wx.StaticBox中进行常规布局? 下面是初始化主框架的代码:

def Init_UI(self):
    panel = wx.Panel(self)

    sb = wx.StaticBox(panel, label='Personal Info')
    sbs = wx.StaticBoxSizer(sb, wx.VERTICAL)

    gender = wx.StaticText(sb, label='Your gender')
    male = wx.RadioButton(sb, label='Male', style=wx.RB_GROUP)
    female = wx.RadioButton(sb, label='Female')

    sbs.AddMany([
        (gender, ),
        (male, ), 
        (female, ),
        ])

Tags: 文档self元素htmlgenderlabelmalesb
1条回答
网友
1楼 · 发布于 2024-10-06 12:31:30

您还没有set面板的大小,但也要注意桌面的某些主题(至少在Linux上)不显示静态框。所以如果一个盒子没有画出来,用另一个主题来测试。(首选项->外观)

import wx

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)
        panel = wx.Panel(self)

        sb = wx.StaticBox(panel, -1, label='Personal Info')
        sbs = wx.StaticBoxSizer(sb, wx.VERTICAL)

        gender = wx.StaticText(sb, label='Your gender')
        male = wx.RadioButton(sb, label='Male', style=wx.RB_GROUP)
        female = wx.RadioButton(sb, label='Female')

        sbs.AddMany([
            (gender, ),
            (male, ),
            (female, ),
            ])
        panel.SetSizer(sbs)

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, 'A Static box')
        frame.Show()
        return True

if __name__ == "__main__":
    app = MyApp()
    app.MainLoop()

enter image description here

相关问题 更多 >