wxPython如何在退出时弹出提示框

xhp168168 2016-05-25 01:37:40

wxPython 代码如下:

import wx

class cjlists(wx.Panel):
def __init__(self,parent):
wx.Panel.__init__(self,parent)
wx.StaticText(self,label='Page 1')
pass

class cjview(wx.Panel):
def __init__(self,parent):
wx.Panel.__init__(self,parent)
wx.StaticText(self,label='Page 2')
pass

if __name__=='__main__':
app = wx.App(False)
frame = wx.Frame(None,title='Demo Notebook')
nb = wx.Notebook(frame)
nb.AddPage(cjlists(nb),'111')
nb.AddPage(cjview(nb),'222')
frame.Show()
app.MainLoop()

程序运行后,在框架的右上角角有 最小化,最大化,关闭三个按钮,如何在点击关闭按钮时,弹出对话框让用户选择是退出还是取消?弹框的代码如下,但我不知道如何将其放入上面的代码中,求指导,一经采纳,马上给分。。。

def OnCloseWindow(self,event):
dlg = wx.MessageDialog(None,'Exit , Are you sure ?',
'Confirmation',wx.YES_NO|wx.ICON_QUESTION)
retCode = dlg.ShowModal()
if(retCode == wx.ID_YES):
self.Destroy()
else:
pass
...全文
579 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhp168168 2016-06-06
  • 打赏
  • 举报
回复
请大家忽略1楼、2楼的回复(太长了,看不过来。。。) 还是在楼主帖子的基础上实现退出程序时弹出对话框 请大神指导,多谢多谢 !!!
xhp168168 2016-05-27
  • 打赏
  • 举报
回复
多谢你的回复! 我想在 Page 1 中加入一个按钮,怎么不能实现呢?

import wx
import wx.aui
 
class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        wx.Frame.__init__(self, *args, **kwds)
 
        self.nb = wx.aui.AuiNotebook(self,size=(500,100),style=1)
        self.new_panel1('Page 1')
        self.new_panel2('Page 2')

    def new_panel1(self, nm):
        pnl = wx.Panel(self)
        pnl.identifierTag = nm
        self.nb.AddPage(pnl, nm)
        self.btn = wx.Button(self,-1,'Preview',pos=(200,230))
        self.Bind(wx.EVT_BUTTON,self.OnChange,self.btn)

    def new_panel2(self, nm):
        pnl = wx.Panel(self)
        pnl.identifierTag = nm
        self.nb.AddPage(pnl, nm)
        
    def OnChange(self,event):
        self.button.SetLabel('Clicked')

 
class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, '12_aui_notebook1.py',size=(620,500))
        frame.Bind(wx.EVT_CLOSE, self.OnCloseWindow, frame)
        frame.Show()
        self.SetTopWindow(frame)
        self.frame = frame
        return 1
    
    def OnCloseWindow(self,event):
        dlg = wx.MessageDialog(None,'Exit , Are you sure ?', 'Confirmation',wx.YES_NO|wx.ICON_QUESTION)
        retCode = dlg.ShowModal()
        if(retCode == wx.ID_YES):
            self.frame.Destroy()
        else:
            pass
 
if __name__ == "__main__":
    app = MyApp(0)
    #wx.lib.inspection.InspectionTool().Show()
    app.MainLoop()

屎克螂 2016-05-26
  • 打赏
  • 举报
回复
你这样写 都不好改,所以我在网上抄了一份改
import wx
import wx.aui

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
    	wx.Frame.__init__(self, *args, **kwds)

    	self.nb = wx.aui.AuiNotebook(self)

    	self.new_panel('Page 1')
    	self.new_panel('Page 2')
    	self.new_panel('Page 3')

    	self.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSED, self.close, self.nb)

    def new_panel(self, nm):
    	pnl = wx.Panel(self)
    	pnl.identifierTag = nm
    	self.nb.AddPage(pnl, nm)
    	self.sizer = wx.BoxSizer()
    	self.sizer.Add(self.nb, 1, wx.EXPAND)
    	self.SetSizer(self.sizer)

    def close(self, event):
    	print 'closed'

class MyApp(wx.App):
    def OnInit(self):
    	frame = MyFrame(None, -1, '12_aui_notebook1.py')
        frame.Bind(wx.EVT_CLOSE, self.OnCloseWindow, frame)
    	frame.Show()
    	self.SetTopWindow(frame)
        self.frame = frame
    	return 1
    def OnCloseWindow(self,event):
        dlg = wx.MessageDialog(None,'Exit , Are you sure ?', 'Confirmation',wx.YES_NO|wx.ICON_QUESTION)
        retCode = dlg.ShowModal()
        if(retCode == wx.ID_YES):
            self.frame.Show(False)
        else:
            pass

if __name__ == "__main__":
    app = MyApp(0)
#    wx.lib.inspection.InspectionTool().Show()
    app.MainLoop()

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧