wxPython in Action (TextEntryDialog

  9.1.3 如何从用户得到短的文本?

这第二个简单类型的对话框是wx.TextEntryDialog,它被用于从用户那里得到短的文本输入。它通常用在在程序的开始时要求用户名或密码的时候,或作为一个数据输入表单的基本替代物。图9.3显示了一个典型的文本对话框。

图9.3 文本输入标准对话框


例9.3显示了产生图9.3的代码

例9.3

import  wx

if  __name__  ==  "__main__":
        app  =  wx.PySimpleApp()
        dialog  =  wx.TextEntryDialog(None, 
                        "What  kind  of  text  would  you  like  to  enter?",
                        "Text  Entry",  "Default  Value",  style=wx.OK|wx.CANCEL)
        if  dialog.ShowModal()  ==  wx.ID_OK:
                print  "You  entered:  %s"  %  dialog.GetValue()

        dialog.Destroy()

在前一小节,我们创建了一个对话框类的实例,在这里,我们要用到的对话框类是wx.TextEntryDialog。该类的构造函数比简单消息对话框要复杂一些:

wx.TextEntryDialog(parent,  message,  caption="Please  enter  text", 
        defaultValue="",  style=wx.OK  |  wx.CANCEL  |  wx.CENTRE, 
        pos=wx.DefaultPosition)

message参数是显示在对话框中的文本提示,而caption显示在标题栏中。defaultValue显示在文本框中的默认值。style可以包括wx.OK和wx.CANCEL,它显示适当的按钮。

几个wx.TextCtrl的样式也可以用在这里。最有用的应该是wx.TE_PASSWORD,它掩饰所输入的真实密码。你也可以使用wx.TE_MULTILINE来使用户能够在对话框中输入多行文本,也可以使用wx.TE_LEFT,  wx.TE_CENTRE,  和  wx.TE_RIGHT来调整所输入的文本的对齐位置。

例9.3的最后显示了在文本框和对话框之间的另一区别。用户所输入的信息被存储在该对话框实例中,并且以后必须应用程序获取。在这种情况下,你可以使用对话框的GetValue()方法来得到该值。记住,如果用户按下Cancel(取消)去退出该对话框,这意味他们不想去使用他所键入的值。你也可以在程序中使用SetValue()方法来设置该值。

下面这些是使用文本对话框的便利函数:

1、wx.GetTextFromUser()
2、wx.GetPasswordFromUser()
3、wx.GetNumberFromUser()

其中和例9.3的用处最近似的是wx.GetTextFromUser():

wx.GetTextFromUser(message,  caption="Input  text", 
        default_value="",  parent=None)

这里的message,  caption,  default_value,  和  parent与wx.TextEntryDialog的构造函数中的一样。如果用户按下OK,该函数的返回值是用户所输入的字符串。如果用户按下Cancel,该函数返回空字符串。

如果你希望用户输入密码,你可以使用wx.GetPasswordFromUser()函数:

wx.GetPasswordFromUser(message,  caption="Input  text", 
        default_value="",  parent=None)

这里的参数意义和前面的一样。用户的输入被显示为星号,如果用户按下OK,该函数的返回值是用户所输入的字符串。如果用户按下Cancel,该函数返回空字符串。

最后,你可以使用wx.GetNumberFromUser()要求用户输入一个数字:

wx.GetNumberFromUser(message,  prompt,  caption,  value,  min=0, 
        max=100,  parent=None) 

这里的参数的意义有一点不同,message是显在prompt上部的任意长度的消息,value参数是默认显示在文本框中的长整型值。min和max参数为用户的输入限定一个范围。如果用户按下OK按钮退出的话,该方法返回所输入的值,并转换为长整型。如果这个值不能转换为一个数字,或不在指定的范围内,那么该函数返回-1,这意味如果你将该函数用于负数的范围的话,你可能要考虑一个转换的方法。

9.1.4 如何用对话框显示选项列表?

如果给你的用户一个空的文本输入域显得太自由了,那么你可以使用wx.SingleChoiceDialog来让他们在一组选项中作单一的选择。图9.4显示了一个例子。

图9.4 一个单选对话框


例9.4显示了产生图9.4的代码

例9.4 显示一个选择列表对话框

import  wx

if  __name__  ==  "__main__":
        app  =  wx.PySimpleApp()
        choices  =  ["Alpha",  "Baker",  "Charlie",  "Delta"]
        dialog  =  wx.SingleChoiceDialog(None,  "Pick  A  Word",  "Choices",
                        choices)
        if  dialog.ShowModal()  ==  wx.ID_OK:
                print  "You  selected:  %s\n"  %  dialog.GetStringSelection()

        dialog.Destroy()
       
wx.SingleChoiceDialog的构造函数如下所示:

wx.SingleChoiceDialog(parent,  message,  caption,  choices, 
                clientData=None,  style=wx.OK  |  wx.CANCEL  |  wx.CENTRE, 
                pos=wx.DefaultPosition) 

message和caption参数的意义与前面的一样,分别显示在对话框和标题栏中。choices参数要求一个字符串的列表,它们是你呈现在对话框中的选项。style参数有三个项,这是默认的,分别是OK按钮、Cancle按钮和使对话框在屏幕中居中。centre选项和pos参数在Windows操作系统上不工作。

如果你想在用户看见对话框之前,设置它的默认选项,使用SetSelection(selection)方法。参数selection是选项的索引值,而非实际选择的字符串。在用户选择了一个选项后,你即可以使用GetSelection()——它返回所选项的索引值,也可以使用GetStringSelection()——它返回实际所选的字符串,来得到它。

有两个用于单选对话框的便利函数。第一个是wx.GetSingleChoice,它返回用户所选的字符串:

wx.GetSingleChoice(message,  caption,  aChoices,  parent=None)

参数message,  caption,  和parent的意义和wx.SingleChoiceDialog构造函数的一样。aChoices参数是选项的列表。如果用户按下OK,则返回值是所选的字符串,如果用户按下Cancel,则返回值是空字符串。这意味如果空字符是一个有效的选择的话,那么你就不该使用这个函数。

第二个是wx.GetSingleChoiceIndex:

wx.GetSingleChoiceIndex(message,  caption,  aChoices,  parent=None)

这个函数与第一个有相同的参数,但是返回值不同。如果用户按下OK,则返回值是所选项的索引,如果用户按下Cancel,则返回值是-1。

你可能感兴趣的:(windows,工作,存储,dialog,action,wxPython)