wxpython GUI在尝试添加aui pan时崩溃

2024-09-29 18:44:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理的GUI有问题。通过单击按钮创建两次窗格,然后每次都将其关闭。当我第三次尝试创建它时,它会冻结。我将代码限制为:

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()

Tags: selfviewappinitdefframewxaui

热门问题