天天看点

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

③运行结果

Python程序设计之GUI(3)
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):
           

③运行结果

Python程序设计之GUI(3)
4.颜色对话框

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

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

③运行结果

Python程序设计之GUI(3)
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()
           

③运行结果

Python程序设计之GUI(3)
6.主函数
if __name__=='__main__':
    print(help(wx.EvtHandler.Bind))
    app=wx.App()
    frame=myFrame(None)
    frame.Show()
    app.MainLoop()
           
学习笔记

1.在添加对话框时需要初始化;

2.文件对话框初始化需要通过os,getcwd()获取当前路径;

3.在初始化对话框后需要通过判断来使得对话框可视化:

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