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.