Python程序设计之GUI(3)

1.对话框

①简单消息框

MessageDialog

②文件对话本框

FileDialog

③字体对话框

FontDialog

④颜色对话框

ColorDialog
2.简单消息框

①创建打开消息框的菜单项

self.menu4=wx.Menu()
self.menuMessage=self.menu4.Append(401,'Message')
self.menuBar1.Append(self.menu4, '&Message')
#打开消息对话框
#wx.EvtHandler.Bind(self,wx.EVT_MENU,self.OnMessage,401)
wx.EVT_MENU(self,401,self.OnMessage)        #self.Bind(wx.EVT_MENU(self,401,self.OnMessage),self.OnMessage)

②绑定函数

def OnMessage(self,event):
        dlg=wx.MessageDialog(self,"Hello",'Caution',wx.CANCEL|wx.OK|wx.ICON_ERROR)
        if dlg.ShowModal()==wx.ID_OK:
            print('Ok')
        dlg.Destroy()

③运行结果
在这里插入图片描述

3.文件对话框

①创建打开文件对话框的菜单项

       #创建文件操作菜单
        self.menu1=wx.Menu()
        self.menuOpen=self.menu1.Append(101,'Open')
        self.menuSave=self.menu1.Append(102,'Save')
        self.menuSaveAs=self.menu1.Append(103,'SaveAs')
        #间隔符
        self.menu1.AppendSeparator()
        self.menuClose=self.menu1.Append(104,'Close')
        self.menuBar1.Append(self.menu1, '&File')
        #打开文件
        #self.Bind(wx.EVT_MENU,self.OnOpen)
        wx.EVT_MENU(self,101,self.OnOpen)
        #保存文件
        wx.EVT_MENU(self,102,self.OnSave)
        #self.Bind(wx.EVT_MENU,self.OnSave)
        #设置保存格式
        wx.EVT_MENU(self,103,self.OnSaveAs)

②绑定文件操作函数

    #文件框处理
    def OnOpen(self,event):
        file_wildcard="Python files(*.py)|*.py|All files(*.*)|*.*"
        dlg=wx.FileDialog(self,"Open file",os.getcwd(),style=wx.FD_OPEN,wildcard=file_wildcard)
        if dlg.ShowModal()==wx.ID_OK:
            self.filename=dlg.GetPath()
            self.SetTitle(self.Title+'-----'+self.filename)
        dlg.Destroy()


    def OnSave(self,event):
        if not self.filename:
            self.OnSaveAs(event)
        else:
            self.SaveFile()

    def SaveFile(self):
        if self.filename:
                f=open(self.filename,'w')
                f.close()

    def OnSaveAs(self,event):
        file_wildcard="Python files(*.py)|*.py|All files(*.*)|*.*"
        dlg=wx.FileDialog(self,"Save file as...",os.getcwd(),style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT,wildcard=file_wildcard)
        if dlg.ShowModal()==wx.ID_OK:
            filename=dlg.GetPath()
            if not os.path.splitext(filename)[1]:
                filename=filename+".py"
            self.filename=filename
            self.SaveFile()
            self.SetTitle(self.Title+'------'+self.filename)
        dlg.Destroy()
    #def OnClose(self,event):

③运行结果
在这里插入图片描述

4.颜色对话框

①创建打开颜色对话框的菜单项

扫描二维码关注公众号,回复: 10072763 查看本文章
    	self.menu2=wx.Menu()
        self.menuColor=self.menu2.Append(201,'Color')
        self.menuBar1.Append(self.menu2, '&Color')
        #打开颜色对话框
        wx.EVT_MENU(self,201,self.OnOpenColor)

②绑定操作函数

    #颜色框
    def OnOpenColor(self,event):
        cd=wx.ColourDialog(self)
        if cd.ShowModal()==wx.ID_OK:
            print('OK')
        cd.Destroy()

③运行结果
在这里插入图片描述

5.字体对话框

①创建打开字体对话框的菜单项

        #front
        self.menu3=wx.Menu()
        self.menuFront=self.menu3.Append(301,'Front')
        self.menuBar1.Append(self.menu3, '&Front')
        #打开字体对话框
        #self.Bind(wx.EVT_MENU,self.OpenFront)
        wx.EVT_MENU(self,301,self.OpenFront)
        #wx.EvtHandler.Bind(self,self.menuFront,self.OpenFront)

②绑定操作函数

    #文字框
    def OpenFront(self,event):
        fd = wx.FontDialog(self)
        if fd.ShowModal() == wx.ID_OK:
            print('OK')
        fd.Destroy()

③运行结果
在这里插入图片描述

6.主函数
if __name__=='__main__':
    print(help(wx.EvtHandler.Bind))
    app=wx.App()
    frame=myFrame(None)
    frame.Show()
    app.MainLoop()
学习笔记

1.在添加对话框时需要初始化;
2.文件对话框初始化需要通过os,getcwd()获取当前路径;
3.在初始化对话框后需要通过判断来使得对话框可视化:

 if dlg.ShowModal()==wx.ID_OK:

4.在使用完对话框后需要销毁:

    dlg.Destroy()
发布了78 篇原创文章 · 获赞 83 · 访问量 5400

猜你喜欢

转载自blog.csdn.net/qxyloveyy/article/details/104761393