. 消息對話框(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、檔案夾選擇對話框
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