学习wxPython,基本的东西

时间:2011-09-27 16:06:16

标签: python wxpython

我想显示一个按钮,当我点击时,会向主面板添加一个自动添加到面板BoxSizer的静态文本。我有这个代码但是效果不好。有人可以帮帮我吗?我很绝望。感谢

import wx

class MyApp(wx.App):
    def OnInit(self):
        self.frame = MainFrame(None,title='')
        self.SetTopWindow(self.frame)
        self.frame.Show()
        return True

class MainFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        super(MainFrame, self).__init__(*args, **kwargs)

        #Atributos
        self.panel = MainPanel(self)
        self.CreateStatusBar()

        #Layout
        self.sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.sizer.Add(self.panel,1,wx.EXPAND)
        self.SetSizer(self.sizer)

class MainPanel(wx.Panel):
    def __init__(self, parent):
        super(MainPanel, self).__init__(parent)

        #Atributos
        bmp = wx.Bitmap('./img.png',wx.BITMAP_TYPE_PNG)
        self.boton = wx.BitmapButton(self,bitmap=bmp)

        # Layout
        self.sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.sizer.Add(self.boton)
        self.SetSizer(self.sizer)

        self.Bind(wx.EVT_BUTTON,self.add,self.boton)

    def add(self,event):
        self.sizer.Add(wx.StaticText(self,label='Testing'))


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

1 个答案:

答案 0 :(得分:4)

如果您的问题是单击按钮时文本最初显示在按钮后面,则可以通过添加对Panel的Layout方法的调用来强制sizer更新。

class MainPanel(wx.Panel):
    def __init__(self, parent):
        super(MainPanel, self).__init__(parent)

        #Atributos
        bmp = wx.Bitmap('./img.png',wx.BITMAP_TYPE_PNG)
        self.boton = wx.BitmapButton(self,bitmap=bmp)

        # Layout
        self.sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.sizer.Add(self.boton)
        self.SetSizer(self.sizer)

        self.Bind(wx.EVT_BUTTON,self.add,self.boton)

    def add(self,event):
        self.sizer.Add(wx.StaticText(self,label='Testing'))
        self.Layout()
相关问题