天天看點

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.在使用完對話框後需要銷毀: