学习wxPython,基本的东西

2024-06-25 05:47:57 发布

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

我想显示一个按钮,当我单击时,会向主面板添加一个静态文本,该文本会自动添加到面板的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()

Tags: 文本selfadd面板initdefframemyapp
1条回答
网友
1楼 · 发布于 2024-06-25 05:47:57

如果您的问题是文本最初在单击按钮时显示在按钮后面,则可以通过添加对面板的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()

相关问题 更多 >