1. 程式人生 > >wx.MessageDialog 建立一個訊息框

wx.MessageDialog 建立一個訊息框




使用訊息框是十分的簡單。例9.2顯示了建立一個訊息框的兩種辦法。

例9.2 建立一個訊息框

import wx
if __name__ == "__main__":
    app = wx.PySimpleApp()

# 方法一,使用類
    dlg = wx.MessageDialog(None, "Is this explanation OK?",
                          'A Message Box',
                          wx.YES_NO | wx.ICON_QUESTION)
    retCode = dlg.ShowModal()
    if (retCode == wx.ID_YES):
        print "yes"
    else:
        print "no"
    dlg.Destroy()

#1 方法二,使用函式
    retCode = wx.MessageBox("Is this way easier?", "Via Function",
            wx.YES_NO | wx.ICON_QUESTION)

例9.2建立了兩個訊息框,一個在另一個的後面。這第一個方法是建立類wx.MessageDialog的一個例項,並使用ShowModal()來顯示它。

使用wx.MessageDialog類


使用wx.MessageDialog的建構函式,你可以設定對話方塊的訊息和按鈕,建構函式如下:

wx.MessageDialog(parent, 
message, caption="Message box", style=wx.OK wx.CANCEL, pos=wx.DefaultPosition)

message引數是實際顯示在對話方塊中的文字。如果訊息字串包含\n字元,那麼文字將在此換行。caption引數顯示在對話方塊的標題欄中。pos引數使你可以指定對話方塊顯示在螢幕上的位置——在微軟Windows下,這個引數將被忽略。

wx.MessageDialog的樣式標記分為兩類。第一類控制顯示在對話方塊中的按鈕。表9.1說明了這些樣式。

表9.1 wx.MessageDialog的按鈕樣式
wx.CANCEL
:包括一個cancel(取消)按鈕。這個按鈕有一個ID值wx.ID_CANCEL。
wx.NO_DEFAULT:在一個wx.YES_NO對話方塊中,No(否)按鈕是預設的。
wx.OK:包括一個OK按鈕,這個按鈕有一個ID值wx.ID_OK。
wx.YES_DEFAULT:在一個wx.YES_NO對話方塊中,Yes按鈕是預設的。這是預設行為。
wx.YES_NO:包括Yes和No按鈕,各自的ID值分別是wx.ID_YES和wx.ID_NO。
第二套樣式標記控制緊挨著訊息文字的圖示。它們顯示在表9.2中。

表9.2 wx.MessageDialog的圖示樣式
wx.ICON_ERROR:
表示一個錯誤的圖示。
wx.ICON_EXCLAMATION:
表示警告的圖示。
wx.ICON_HAND:
同wx.ICON_ERROR。
wx.ICON_INFORMATION:資訊圖示,字母i。
wx.ICON_QUESTION:
問號圖示。

最後,你可以使用樣式wx.STAY_ON_TOP將對話方塊顯示在系統中任何其它視窗的上面,包括系統視窗和wxPython應用程式視窗。
你在例9.2所見到的,對話方塊通過使用ShowModal()被呼叫。根據所顯示的按鈕,返回的結果是以下值之一:wx.ID_OK,  wx.ID_CANCEL,wx.ID_YES, 或 wx.ID_NO。如同其它對話方塊的情況,你通常使用這些值來控制程式的執行。

使用wx.MessageBox()函式

例9.2中的#1顯示了一個呼叫訊息框的更簡短的方法。這個便利的函式wx.MessageBox()建立對話方塊,呼叫ShowModal(),並且返回下列值之一:wx.YES, wx.NO, wx.CANCEL, 或 wx.OK。函式的形式比MessageDialog的建構函式更簡單,如下所示:

wx.MessageBox(message, caption="Message", style=wx.OK)

在這個例子中,引數message, caption, style的意思和建構函式中的相同,你可以使用所有相同的樣式標記。正如我們貫穿本章將看到的,在wxPython預定義的幾個對話方塊都有便利的函式。在你為單一的使用建立對話方塊的時候,你的選擇有一個優先的問題。如果你計劃束縛住對話方塊以便多次呼叫它,那麼你可能會優先選擇去例項化物件以便你能夠束縛該引用,而不使用函式的方法,儘管這對於這些簡單的對話方塊來說,所節約的時間可以忽略不計。
要在你的訊息框中顯示大量的文字(例如,終端使用者許可證的顯示),你可以使用wxPython特定的類wx.lib.dialogs.ScrolledMessageDialog,它包含如下的建構函式:

wx.lib.dialogs.ScrolledMessageDialog(parent, msg, caption, pos=wx.wxDefaultPosition, size=(500,300))

這個對話方塊不使用本地訊息框控制元件,它根據別的wxPython視窗部件來建立一個對話方塊。它只顯示一個OK按鈕,並且沒有更多的樣式資訊。