код на wxpython не работает

Этот код

import wx,os


class FileManager(wx.Panel):
    def __init__(self,*args, **kwargs):
        super().__init__(*args, **kwargs)
        self.l=list(os.listdir(r'C:\Windows\System32'))
        self.list=wx.ListBox(self,choices=self.l)
        self.sizer=wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.list,1,wx.EXPAND|wx.ALL)
        self.SetSizer(self.sizer)

class Frame(wx.Frame):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.top_splitter=Splitter(self)
        self.top_splitter.SetMinimumPaneSize(150)
        file_manager=FileManager(self.top_splitter)
        control=Control(self.top_splitter,wx.TE_MULTILINE)
        self.top_splitter.split_vertically(file_manager,control)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.top_splitter, 1, wx.EXPAND)
        self.SetSizer(sizer)
class Splitter(wx.SplitterWindow):
    def __init__(self,*args,**kw):
        super().__init__(*args,**kw)
    def split_vertically(self,first,second):
        self.SplitVertically(first,second)
    def split_horizontally(self,first,second):
        self.SplitHorizontally(first,second)
class Control(wx.Panel):
    def __init__(self,*args,**kw):
        super().__init__(*args,**kw)
        self.sizer=wx.BoxSizer()
        self.sizer.Add(self)
        self.SetSizer(self.sizer)
app = wx.App()
editor = Frame(None, title='wxPython')
editor.Show()


app.MainLoop()

Возвращает

Process returned 3221226525 (0xc000041d)        execution time : 4.721 s
Для продолжения нажмите любую клавишу . . .

И не открывает окно. Как исправить?


Ответы (1 шт):

Автор решения: ioprst

В сайзер панели Control вы добавляете саму эту панель. Конечно же так делать нельзя.

Если убрать self.sizer.Add(self), программа запускается.

→ Ссылка