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、文件夾選擇對話框 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM