简体   繁体   中英

wxpython GUI crash while trying to add aui pane

I am having a problem with a GUI that I'm working on. The pane is created twice by clicking the button then closed it each time. It freezes when I try creating it for the third time. I have limited the code to this:

import wx
import wx.aui as aui

class Controller:
    def __init__(self, app):
        self.view = Frame()
        self.view.btn.Bind(wx.EVT_BUTTON, self.onBtn)

    def onBtn(self, event):
        self.view.CreateTicket()

class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, size=(600,400))

        self.panel = wx.Panel(self)

        self.ticketPanel = wx.Panel(self.panel)
        self.ticketPanel.Hide()     
        self.btn = wx.Button(self.panel)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.btn)

        self.panel.SetSizer(sizer)

        self.CreatePain()        
        self.Layout()
        self.Show()

    def CreatePain(self):       
        self.mgr = aui.AuiManager(self.panel,
                   aui.AUI_MGR_DEFAULT
                 | aui.AUI_MGR_TRANSPARENT_DRAG
                 | aui.AUI_MGR_ALLOW_ACTIVE_PANE)

    def CreateTicket(self):

        self.mgr.AddPane(self.ticketPanel, aui.AuiPaneInfo().
                         Caption("TradeTicket").
                         Float().FloatingPosition((200,100)).
                         FloatingSize(wx.Size(50, 50)).MinimizeButton(True))
        self.mgr.Update()

if __name__ == "__main__":
    app = wx.App(False)
    controller = Controller(app)
    app.MainLoop()

I think the problem is that you add the same wx.Panel instance ( self.ticketPanel ) as a pane. Try creating a new one for every pane.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM