wxPython:如何在SetLabelText之后更改对齐静态文本

wxPython:如何在SetLabelText之后更改对齐静态文本,python,wxpython,wxformbuilder,Python,Wxpython,Wxformbuilder,如果通过wxpython创建框架并更改staticText的内容,则对齐将初始化。 我怎样才能解决这个问题? 我想再次对齐它。要动态设置窗口对齐标志,必须 去拿wx.Sizer 找到wx.SizerItem 通过SetFlag 调用Sizer.Layout() 下面是一个简单的例子: 导入wx 导入回溯 def run(): app=wx.app() #创建测试框架 frame=wx.frame(无,title=“测试帧”,大小=(500500)) #创建一个简单的boxsizer sizer=

如果通过wxpython创建框架并更改staticText的内容,则对齐将初始化。 我怎样才能解决这个问题?
我想再次对齐它。

要动态设置窗口对齐标志,必须

  • 去拿wx.Sizer
  • 找到wx.SizerItem
  • 通过
    SetFlag
  • 调用
    Sizer.Layout()
  • 下面是一个简单的例子:

    导入wx
    导入回溯
    def run():
    app=wx.app()
    #创建测试框架
    frame=wx.frame(无,title=“测试帧”,大小=(500500))
    #创建一个简单的boxsizer
    sizer=wx.BoxSizer()
    #创建我们将动态调整的对象
    st=wx.StaticText(框架,标签=“单击我”)
    st.SetFont(wx.Font(30,74,90,wx.FONTWEIGHT_加粗,真,“Arial四舍五入”))
    #首先将文本与中间对齐
    添加(st、0、wx.对齐\中心\垂直)
    框架设置器(施胶器)
    #绑定到任意事件
    st.Bind(wx.EVT左下,点击)
    #进行初始布局并显示框架
    frame.Layout()
    frame.Show()
    app.MainLoop()
    单击时的def(事件):
    event.Skip()
    #检索静态文本对象
    st=event.GetEventObject()#类型:wx.StaticText
    #获取包含此对象的大小调整器
    sizer=st.GetContainingSizer()#类型:wx.BoxSizer
    #查找sizer项
    #sizer项保存对齐信息并告知
    #sizer将显示如何显示此对象
    sizer_item=sizer.GetItem(st)#类型:wx.SizerItem
    #交替在顶部和底部对齐
    如果sizer\u item.GetFlag()&wx.ALIGN\u底部:
    打印(“将对齐设置为顶部”)
    sizer_item.SetFlag(wx.ALIGN_TOP)
    其他:
    打印(“将对齐设置为底部”)
    sizer_item.SetFlag(wx.ALIGN_底部)
    #调用布局以重新计算对象位置
    sizer.Layout()
    如果名称=“\uuuuu main\uuuuuuuu”:
    尝试:
    运行()
    除:
    traceback.print_exc()
    输入()
    
    要动态设置窗口对齐标志,必须

  • 去拿wx.Sizer
  • 找到wx.SizerItem
  • 通过
    SetFlag
  • 调用
    Sizer.Layout()
  • 下面是一个简单的例子:

    导入wx
    导入回溯
    def run():
    app=wx.app()
    #创建测试框架
    frame=wx.frame(无,title=“测试帧”,大小=(500500))
    #创建一个简单的boxsizer
    sizer=wx.BoxSizer()
    #创建我们将动态调整的对象
    st=wx.StaticText(框架,标签=“单击我”)
    st.SetFont(wx.Font(30,74,90,wx.FONTWEIGHT_加粗,真,“Arial四舍五入”))
    #首先将文本与中间对齐
    添加(st、0、wx.对齐\中心\垂直)
    框架设置器(施胶器)
    #绑定到任意事件
    st.Bind(wx.EVT左下,点击)
    #进行初始布局并显示框架
    frame.Layout()
    frame.Show()
    app.MainLoop()
    单击时的def(事件):
    event.Skip()
    #检索静态文本对象
    st=event.GetEventObject()#类型:wx.StaticText
    #获取包含此对象的大小调整器
    sizer=st.GetContainingSizer()#类型:wx.BoxSizer
    #查找sizer项
    #sizer项保存对齐信息并告知
    #sizer将显示如何显示此对象
    sizer_item=sizer.GetItem(st)#类型:wx.SizerItem
    #交替在顶部和底部对齐
    如果sizer\u item.GetFlag()&wx.ALIGN\u底部:
    打印(“将对齐设置为顶部”)
    sizer_item.SetFlag(wx.ALIGN_TOP)
    其他:
    打印(“将对齐设置为底部”)
    sizer_item.SetFlag(wx.ALIGN_底部)
    #调用布局以重新计算对象位置
    sizer.Layout()
    如果名称=“\uuuuu main\uuuuuuuu”:
    尝试:
    运行()
    除:
    traceback.print_exc()
    输入()
    
    此问题是由文本控件的自动调整大小引起的,为了防止出现这种情况,只需将wx.ST_NO_自动调整大小添加到样式中,即可解决此问题

    txtCtrl = wx.StaticText(parent, -1, "some label", style = wx.ALIGN_CENTER| wx.ST_NO_AUTORESIZE)
    

    静态文本没有名为SetStyle()的方法。

    此问题是由文本控件的自动调整大小引起的,为了防止出现这种情况,只需将wx.ST_NO_自动调整大小添加到样式中即可解决

    txtCtrl = wx.StaticText(parent, -1, "some label", style = wx.ALIGN_CENTER| wx.ST_NO_AUTORESIZE)
    

    静态文本没有名为SetStyle()的方法。

    您的问题不清楚。请提供一个小的工作示例,说明您所拥有的,并解释您希望实现的目标。您的问题不清楚。请提供一个小的工作示例,说明您所拥有的,并解释您希望实现的目标。我遇到一个错误:AttributeError:“StaticText”对象没有属性“SetStyle”@Y。Wang谢谢您让我知道,我已经更新了答案我遇到一个错误:AttributeError:'StaticText'对象没有属性'SetStyle'@Y.Wang谢谢你让我知道,我已经更新了答案