См. Коды ниже: моя версия WxPython 4.0.1, я хочу настроить компонент на основе wxPanel и повторно использовать его в wxFrame.Показ второго объекта был необычным, я не смог найти ни одной ошибки моих кодов, должно быть что-то, чего я не знаю, кто-то помог, большое спасибо!
import wx
class ListPl(wx.Panel):
def __init__(self, parent, size=(200, 200), pos=(0, 0), index=-1):
wx.Panel.__init__(self, parent=parent, pos=pos, size=(100, 100))
self.t1 = wx.StaticText(self, label="Test1")
self.t2 = wx.StaticText(self, label="Test2")
self.t3 = wx.StaticText(self, label="Test3")
self.t1.SetBackgroundColour("RED")
self.t2.SetBackgroundColour("YELLOW")
self.t3.SetBackgroundColour("BLUE")
self.vbox = wx.BoxSizer(wx.VERTICAL)
self.vbox.Add(self.t1, proportion=0, flag=wx.ALL)
self.vbox.Add(self.t2, proportion=0, flag=wx.ALL)
self.vbox.Add(self.t3, proportion=0, flag=wx.ALL)
self.SetSizer(self.vbox)
self.SetBackgroundColour((size[0], size[1], 120+index*100))
import wx
from ListPl import ListPl
class TestFrame(wx.Frame):
def __init__(self, parent, size=(960, 639)):
wx.Frame.__init__(self, parent, title="test", size=size)
self.lp = ListPl(self, size=(100, 100), index=1)
self.lp2 = ListPl(self, size=(100, 100), index=2)
rs = wx.BoxSizer(wx.VERTICAL)
rs.Add(self.lp, flag=wx.ALL)
rs.Add(self.lp2, flag=wx.ALL)
self.SetSizer(rs)
if __name__ == "__main__":
app = wx.App()
TestFrame(None).Show()
app.MainLoop()
test.png