天天看點

wxpython 對話框

. 消息對話框(wx.MessageDialog)

消息對話框

與使用者通信最基本的機制是wx.MessageDialog,它是一個簡單的提示框。

wx.MessageDialog可用作一個簡單的OK框或yes/no對話框。下面的片斷顯示了yes/no對話框:

dlg = wx.MessageDialog(None, 'Is this the coolest thing ever!',                         'MessageDialog', wx.YES_NO | wx.ICON_QUESTION)  result = dlg.ShowModal()  dlg.Destroy()      
wx.MessageDialog參數如下:       
wx.MessageDialog(parent, message, caption="Message box",       
style=wx.OK | wx.CANCEL, pos=wx.DefaultPosition)  ShowModal()方法将對話框以模式架構的方式顯示(還可以以Show()方法顯示,但不會阻塞别的視窗相應使用者事件)      
這意味着在對話框關閉之前,應用程式中的别的視窗不能響應使用者事件。      
ShowModal()方法的傳回值是一個整數,對于wx.MessageDialog,傳回值是下面常量之一:       
wx.ID_YES, wx.ID_NO, wx.ID_CANCEL, wx.ID_OK。      
2. 文本輸入對話框      
如果你想從使用者那裡得到單獨一行文本,你可能使用類wx.TextEntryDialog。      
下面的片斷建立了一個文本輸入域,當使用者單擊OK按鈕退出時,獲得使用者輸入的值:       
dlg = wx.TextEntryDialog(None, "Who is buried in Grant's tomb?",          'A Question', 'Cary Grant')  if dlg.ShowModal() == wx.ID_OK:      response = dlg.GetValue()        
上面的wx.TextEntryDialog的參數按順序說明是,      
父視窗,顯示在視窗中的文本标簽,      
視窗的标題(預設是“Please enter text”),      
輸入域中的預設值。      
同樣它也有一個樣式參數,預設是wx.OK | wx.CANCEL。      
與wx.MessageDialog一樣,ShowModal()方法傳回所按下的按鈕的ID。      
GetValue()方法得到使用者輸入在文本域中的值(這有一個相應的SetValue()方法讓你可以改變文本域中的值)。      
3.從一個清單中選擇      
你可以讓使用者隻能從你所提供的清單中選擇,你可以使用類wx.SingleChoiceDialog。下面是一個簡單的用法:      
dlg = wx.SingleChoiceDialog(None,          'What version of Python are you using?',          'Single Choice',          ['1.5.2', '2.0', '2.1.3', '2.2', '2.3.1'],  if dlg.ShowModal() == wx.ID_OK:      response = dlg.GetStringSelection()      
wx.SingleChoiceDialog的參數類似于文本輸入對話框,隻是以字元串的清單代替了預設的字元串文本。      
要得到所選擇的結果有兩種方法,      
GetSelection()方法傳回使用者選項的索引,而GetStringSelection()傳回實際所選的字元串。       

4.标準檔案對話框

wx.FileDialog最重要的方法是它的構造器,文法如下:

wx.FileDialog(parent, message="Choose a file",

defaultDir="", defaultFile="", wildcard="*.*", style=0)

表6.6對構造器的參數進行了說明。

表6.6 wx.FileDialog構造器的參數

parent:對話框的父視窗。如果沒有父視窗則為None。

message:message顯示在對話框的标題欄中。

defaultDir:當對話框打開時,預設的目錄。如果為空,則為目前工作目錄。

defaultFile:當對話框打開時,預設選擇的檔案。如果為空,則沒有檔案被選擇。

wildcard:通配符。指定要選擇的檔案類型。

格式是 display | wildcard 。可以指定多種類型的檔案,

例如:“Sketch files (*.sketch)|*.sketch|All files (*.*)|*.*”。

style:樣式。見下表6.7。

表6.7 wx.FileDialog的樣式

wx.CHANGE_DIR:在使用者選擇了一個檔案之後,目前工作目錄相應改變到所選檔案所在的目錄。

wx.MULTIPLE:僅适用于打開對話框。這個樣式使得使用者可以選擇多個檔案。

wx.OPEN:這個樣式用于打開一個檔案。

wx.OVERWRITE_PROMPT:僅适用于儲存檔案對話框。顯示一個提示資訊以确認是否覆寫一個已存在的檔案。

wx.SAVE:這個樣式用于儲存一個檔案。

要使用檔案對話框,要對一個對話框執行個體調用ShowModal()方法。

這個方法根據使用者所敲擊的對話框上的按鈕來傳回wx.ID_OK或wx.ID_CANCEL。

選擇之後。使用GetFilename(), GetDirectory(), 或GetPath()方法來擷取資料。

之後,調用Destroy()銷毀對話框是一個好的觀念。

5.标準的顔色選擇器

我們可以使用wxPython提供的标準wx.ColourDialog。

這個對話框的用法類似于檔案對話框。

它的構造器隻需要一個parent(雙親)和一個可選的資料屬性參數。

資料屬性是一個wx.ColourData的執行個體,它存儲與該對話框相關的一些資料,

如使用者選擇的顔色,還有自定義的顔色的清單。

使用資料屬性使你能夠在以後的應用中保持自定義顔色的一緻性。

dlg = wx.ColourDialog(self)

        dlg.GetColourData().SetChooseFull(True)

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

            print dlg.GetColourData().GetColour()

        dlg.Destroy()

顔色資料執行個體的SetChooseFull()方法告訴對話框去顯示整個調色闆,其中包括了自定義的顔色資訊。

對話框關閉後,我們根據得到的顔色來拾取顔色資料。顔色資料作為一個wx.Color的執行個體傳回.

6、檔案夾選擇對話框 

wxpython 對話框
1、檔案儲存對話框
 file_wildcard = "Paint files(*.paint)|*.paint|All files(*.*)|*.*" 
        dlg = wx.FileDialog(self, 
                            "Save paint as ...",
                            os.getcwd(),
                            style = wx.SAVE | wx.OVERWRITE_PROMPT,
                            wildcard = file_wildcard)
        if dlg.ShowModal() == wx.ID_OK:
            filename = dlg.GetPath()
            if not os.path.splitext(filename)[1]: #如果沒有檔案名字尾
                filename = filename + '.paint'
            self.filename = filename
            self.SaveFile()
            self.SetTitle(self.title + '--' + self.filename)
        dlg.Destroy()    

2、打開檔案對話框      
def OnOpen(self, event):
        '''
        打開開檔案對話框
        '''
        file_wildcard = "Paint files(*.paint)|*.paint|All files(*.*)|*.*" 
        dlg = wx.FileDialog(self, "Open paint file...",
                            os.getcwd(), 
                            style = wx.OPEN,
                            wildcard = file_wildcard)
        if dlg.ShowModal() == wx.ID_OK:
            self.filename = dlg.GetPath()
            self.ReadFile()
            self.SetTitle(self.title + '--' + self.filename)
        dlg.Destroy()      

轉載于:https://www.cnblogs.com/wangjian8888/p/6028748.html