Пользовательская панель wxpython повторно используется в кадре с необычным изображением - PullRequest
0 голосов
/ 31 мая 2018

См. Коды ниже: моя версия 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

1 Ответ

0 голосов
/ 31 мая 2018

Вы не упоминаете среду, в которой вы работаете, поэтому попробуйте запустить ее прямо из командной строки.Это должно работать.
Хотя ваша последняя строка в ListPl.py переопределит цвета фона, которые вы установили для элементов statictext.Вместо этого попробуйте изменить ListPl.py на следующее:

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.SetForegroundColour(wx.RED)
        self.t2.SetForegroundColour(wx.YELLOW)
        self.t3.SetForegroundColour(wx.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))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...