按钮相互重叠

时间:2016-09-19 07:02:50

标签: python wxpython

我有以下代码:

    self.btn1 = wx.Button(self, -1, _("a"))
    self.btn2 = wx.Button(self, -1, _("b"))
    btnSizer = wx.BoxSizer(wx.HORIZONTAL)
    btnSizer.Add(self.btn1 , 0, wx.RIGHT, 10)
    btnSizer.Add(self.btn2 , 0, wx.RIGHT, 10)

这很有效。 但是,有一种情况我更改了btn2

的标题
self.btn1.SetLabel('bbbbb')

当我这样做时btn1重叠btn2 ....

第一行是原件 第二行是在设置标签之后。

enter image description here

如何让屏幕刷新到新的按钮尺寸?

1 个答案:

答案 0 :(得分:1)

您可以使用self.Layout(),但在这种情况下,它确实不是必需的。您的代码必须存在一些问题。

import wx

class ButtonFrame(wx.Frame):
    def __init__(self, value):
        wx.Frame.__init__(self,None)
        self.btn1 = wx.Button(self, -1, ("a"))
        self.btn2 = wx.Button(self, -1, ("b"))
        self.btnSizer = wx.BoxSizer(wx.HORIZONTAL)
        self.btnSizer.Add(self.btn1 , 0, wx.RIGHT, 10)
        self.btnSizer.Add(self.btn2 , 0, wx.RIGHT, 10)
        self.btn1.Bind(wx.EVT_BUTTON, self.OnPressA)
        self.btn2.Bind(wx.EVT_BUTTON, self.OnPressB)
        self.SetSizer(self.btnSizer)
        self.Centre()
        self.Show()

    def OnPressA(self,evt):
        self.btn1.SetLabel('bbbbbbbbbbbbbbbbbbbbbbbbbb')
#        self.Layout()

    def OnPressB(self,evt):
        self.btn2.SetLabel('aaaaaaaaaaaaaaaaaaaaaaaaaa')
#        self.Layout()

if __name__ == "__main__":
    app = wx.App(False)
    ButtonFrame(None)
    app.MainLoop()