wxPython in Action (MessageDialog)

 
9.1.2 如何创建一个警告框?

经由一个对话框与用户交互的最简单的三个办法分别是:wx.MessageDialog,它是一个警告框、wx.TextEntryDialog,它提示用户去输入一些短的文本、wx.SingleChoiceDialog,它使用户能够从一个有效选项列表中进行选择。在接下来的三个小节中,我们将论这些简单的对话框。

消息对话框显示一个短的消息,并使用户通过按下按钮来作响应。通常,消息框被用作去显示重要的警告、yes/no问题、或询问用户是否继续某种操作。图9.2显示了一个典型的消息框。

图9.2 


使用消息框是十分的简单。例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按钮,并且没有更多的样式信息。

你可能感兴趣的:(windows,action,微软,终端,wxPython)