Wxpython 如何以编程方式调整StaticText对象周围的边框?

Wxpython 如何以编程方式调整StaticText对象周围的边框?,wxpython,Wxpython,在给定StaticText对象的情况下,如何通过编程调整StaticText对象的边框?似乎有一个SizerItem与此对象关联,但我不知道如何找到它 我看到StaticText对象有一个GetBorder()函数,但是这个函数返回wx.NO_BORDER,所以这不是我要找的 最简单的工作示例: import wx import wx.xrc class MyFrame(wx.Frame): def __init__(self, parent): wx.Frame._

在给定StaticText对象的情况下,如何通过编程调整StaticText对象的边框?似乎有一个SizerItem与此对象关联,但我不知道如何找到它

我看到StaticText对象有一个GetBorder()函数,但是这个函数返回wx.NO_BORDER,所以这不是我要找的

最简单的工作示例:

import wx
import wx.xrc


class MyFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(
            self,
            parent,
            id=wx.ID_ANY,
            title=wx.EmptyString,
            pos=wx.DefaultPosition,
            size=wx.Size(500, 300),
            style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL,
        )

        self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)

        box_sizer = wx.BoxSizer(wx.VERTICAL)

        labeled_box_sizer = wx.StaticBoxSizer(
            wx.StaticBox(self, wx.ID_ANY, u"label"), wx.VERTICAL
        )

        self.m_text_top = wx.StaticText(
            labeled_box_sizer.GetStaticBox(),
            wx.ID_ANY,
            u"Border = 0",
            wx.DefaultPosition,
            wx.DefaultSize,
            0,
        )
        self.m_text_top.Wrap(-1)

        labeled_box_sizer.Add(self.m_text_top, 0, wx.ALL, 0)

        self.m_text_bottom = wx.StaticText(
            labeled_box_sizer.GetStaticBox(),
            wx.ID_ANY,
            u"Border = 5",
            wx.DefaultPosition,
            wx.DefaultSize,
            0,
        )
        self.m_text_bottom.Wrap(-1)

        labeled_box_sizer.Add(self.m_text_bottom, 0, wx.ALL, 5)

        box_sizer.Add(labeled_box_sizer, 0, wx.ALL, 5)

        self.SetSizer(box_sizer)
        self.Layout()

        self.Centre(wx.BOTH)

    def __del__(self):
        pass


app = wx.App()
window = MyFrame(None)
window.Show()

text = window.m_text_top

# text.SetBorder(5)  # <-- no such method exists

app.MainLoop()
导入wx
导入wx.xrc
类MyFrame(wx.Frame):
定义初始化(自身,父级):
wx.Frame.\uuuu init__(
自己
父母亲
id=wx.id\u任何,
title=wx.EmptyString,
位置=wx.DefaultPosition,
尺寸=宽x.尺寸(500300),
style=wx.DEFAULT_FRAME_style|wx.TAB_遍历,
)
self.SetSizeHints(wx.DefaultSize,wx.DefaultSize)
盒子尺寸=wx.BoxSizer(wx.VERTICAL)
标签为\u box\u sizer=wx.StaticBoxSizer(
wx.StaticBox(自,wx.ID_ANY,u“标签”),wx.VERTICAL
)
self.m_text_top=wx.StaticText(
标签为\u box\u sizer.GetStaticBox(),
wx.ID_任何,
u“边界=0”,
wx.DefaultPosition,
wx.DefaultSize,
0,
)
self.m_text_top.Wrap(-1)
已标记为\u box\u sizer.Add(self.m\u text\u top,0,wx.ALL,0)
self.m_text_bottom=wx.StaticText(
标签为\u box\u sizer.GetStaticBox(),
wx.ID_任何,
u“边界=5”,
wx.DefaultPosition,
wx.DefaultSize,
0,
)
self.m_text_bottom.Wrap(-1)
已标记为\u box\u sizer.Add(self.m\u text\u bottom,0,wx.ALL,5)
添加(标记为0,wx.ALL,5)
自整定器(箱式施胶器)
self.Layout()
自中心(wx和wx)
定义(自我):
通过
app=wx.app()
window=MyFrame(无)
window.Show()
text=window.m\u text\u top

#text.setboorder(5)#您应该能够像这样获得
wx.SizerItem

item = text.GetContainingSizer().GetItem(text)
如果您只想保留对sizer项的引用,而不是每次都获取它,那么在添加静态文本时,它将从sizer的
Add
方法返回

一旦您拥有了该项目,您就可以调整该项目的sizer特定属性。在完成调整后,请务必调用sizer或包含小部件的
布局
方法