wxPython – 对话框类
尽管 Dialog类 对象看起来像一个 Frame ,但它通常被用作父框架上的一个弹出式窗口。对话框的目的是收集用户的一些数据并将其发送给父框架。对话框可以是模态的(它阻止父框架)或无模式的(对话框可以被绕过)。ShowModal()方法以模态方式显示对话框,而Show()则使其无模式。
wxPython有许多预配置的Dialog部件,如MessageDialog、FileDialog、FontDialog等。
wx.Dialog支持使用Sizer,就像wx.Frame对象一样。因此,可以设计一个自定义的Dialog。
Wx.Dialog类的构造函数需要以下常用参数
对话框部件的默认外观在标题栏中只显示关闭框。然而,它可以使用以下风格参数的组合来定制。
下面是最常用的对话框的参数 。 S.N. | 参数和描述 |
---|---|
1 | wx.CAPTION 在对话框上放置一个标题。 |
2 | wx.DEFAULT_DIALOG_STYLE 相当于wxCAPTION、wxCLOSE_BOX和wxSYSTEM_MENU的组合。 |
3 | wx.RESIZE_BORDER 在窗口周围显示一个可调整大小的框架 |
4 | wxSYSTEM_MENU 显示一个系统菜单 |
5 | wx.CLOSE_BOX 在框架上显示一个关闭框 |
6 | wx.MAXIMIZE_BOX 在对话框上显示一个最大化框 |
7 | wx.MINIMIZE_BOX 在对话框中显示一个最小化框。 |
8 | wx.STAY_ON_TOP 确保对话框保持在所有其他窗口的顶部。 |
9 | wx.DIALOG_NO_PARENT 防止创建无主对话框。不建议用于模态对话框 |
为这个类定义了两个甚至是绑定器-
下面是最常用的对话框事件 。 S.N. | 事件和描述 |
---|---|
1 | EVT_CLOSE 当对话框被用户或以程序方式关闭时 |
2 | EVT_INIT_DIALOG 当对话框正在被初始化时 |
如上所述,Dialog的目标是收集数据并返回到父窗口。然而,Dialog类也有一些有用的方法。
下面给出的是Dialog最常用的方法 。 S.N. | 方法和描述 |
---|---|
1 | DoOK() 对话框上的OK按钮被按下时调用。 |
2 | ShowModal() 以应用模态方式显示对话框 |
3 | ShowWindowModal() 对话框只对顶层父窗口显示模式。 |
4 | EndModal() 通过调用ShowModal的值来结束一个模态对话框。 |
预配置的对话框之一是MessageDialog。它被用来显示一条或多条带有标准ID的按钮的信息。下面是MessageDialog上标准按钮的选择列表。
下面是最常用的对话框的按钮 。 S.N. | 按钮和描述 |
---|---|
1 | wx.OK 显示OK按钮 |
2 | wx.CANCEL 显示取消按钮 |
3 | wx.YES_NO 显示是、否按钮 |
4 | wx.YES_DEFAULT 使Yes按钮成为默认按钮 |
5 | wx.NO_DEFAULT 将No按钮设为默认值。 |
6 | wx.ICON_EXCLAMATION 显示一个警报图标 |
7 | wx.ICON_ERROR 显示一个错误图标 |
8 | wx.ICON_HAND 与wx.ICON_ERROR相同 |
9 | wx.ICON_INFORMATION 显示一个信息图标 |
10 | wx.ICON_QUESTION 显示一个问题图标 |
消息对话框
这是用下面的构造函数声明的–
要显示的一行或多行文字是消息参数,而标题栏上显示的是字幕。默认的样式参数是wx.OK|wx.ECNRE。其他样式参数允许对消息框进行定制。
wx.MessageBox是一个方便的函数,用于构建一个消息框,而不是使用MessageDialog。
例子
下面是一个简单的Dialog的模式和无模式行为的演示。父窗口是一个带有两个按钮的wx.Frame对象。第一个按钮上的点击事件以模态方式显示一个对话框。因此,在对话框关闭之前,对父窗口的任何操作都被阻止。第二个按钮显示一个无模式对话框,它不妨碍对父窗口的访问。第三个按钮显示一个MessageBox。
整个代码如下
上述代码产生了以下输出 —
wx.TextEntryDialog
该类的对象显示一个对话框,其中有一个文本字段,一个可定制的标签,提示用户输入和两个具有预定义样式的按钮。
虽然这个对话框要求单行输入,但文本框可以通过使用TextCtrl样式(如密码和多行)进行自定义。
当用户点击OK按钮时,文本字段的内容被收集为返回值。
TextEntryDialog的构造函数如下所示
要在对话窗口上显示的文本作为消息参数被传递。标题参数是要在标题栏中显示的字符串。文本框中的默认字符串是alue参数。对话框中的TextCtrl可以被配置为显示密码字符(wx.TE_PASSWORD)和/或多行(wx.TE_MULTILINE)。
TextEntry类的其他方法如下表所示
下面给出的是TextEntry最常用的方法 。 S.N. | 方法和描述 |
---|---|
1 | SetMaxLength() 设置用户可以输入到文本框的最大字符数。 |
2 | SetValue() 以编程方式设置文本框的值 |
3 | GetValue() 返回文本框的内容 |
4 | ShowModal() 以模式显示对话框。如果用户确认输入,返回wx.ID_OK,如果对话框被拒绝,返回wx.ID_CANCEL。 |
例子
以下例子中的顶层框架显示了一个按钮和一个只读的TextCtrl部件。
该按钮对点击作出反应,并调用OnClick()函数。
OnClick()函数显示一个TextEntryDialog。
对话框的返回值由GetValue()函数获取并显示在顶层框架的TextCtrl对象中。
完整的代码如下-
上述代码产生了以下输出 —
wx.FileDialog类
该类代表一个文件选择器对话框。它使用户能够在文件系统中导航,并选择一个文件来打开或保存。对话框的外观是操作系统特定的。
一个文件过滤器也可以被应用来只显示指定扩展名的文件。 起始目录和默认文件名也可以被设置。
FileDialog构造函数的原型看起来像这样
消息代表要显示的文本。DefaultDir是初始目录。一个或多个类型的文件可以被设置为文件过滤器,由通配符参数表示。
Style parameters defined for FileDialog are −
下面给出的是FileDialog最常用的参数 。 S.N. | 参数和描述 |
---|---|
1 | wx.FD_DEFAULT_STYLE 相当于wxFD_OPEN |
2 | wx.FD_OPEN 这是一个打开的对话框;对话框的默认按钮标签是 “打开”。 |
3 | wx.FD_SAVE 这是一个保存对话框;对话框的默认按钮标签为 “保存”。 |
4 | wx.FD_OVERWRITE_PROMPT 仅用于保存对话框:如果文件将被覆盖,则提示确认。 |
5 | wx.FD_MULTIPLE 仅用于打开对话框:允许选择多个文件 |
6 | wx.FD_CHANGE_DIR 将当前工作目录改为用户选择的文件所在的目录。 |
wx.FileDialog类的成员函数-
下面给出了wx.FileDialog最常用的函数 S.N. | 函数和描述 |
---|---|
1 | GetDirectory() 返回默认目录 |
2 | GetFileName() 返回默认的文件名 |
3 | GetPath() 返回所选文件的完整路径 |
4 | SetDirectory() 设置默认目录 |
5 | SetFilename() 设置默认文件 |
6 | SetPath() 设置完整路径 |
7 | ShowModal() 显示对话框,如果用户点击OK按钮,返回wx.ID_OK,否则返回wx.ID_CANCEL。 |
例子
在下面的例子中,顶层框架显示一个按钮和一个多行TextCtrl。
EVT_BUTTON事件绑定器为按钮注册了OnClick()函数。
OnClick()函数在打开模式下显示一个FileDialog。它的选择被返回为dlg。选定的文件由GetPath()函数获得,其内容显示在父窗口的TextCtrl框中。
完整的代码如下-
上述代码产生了以下输出 —
wx.FontDialog类
这个类的对象是一个字体选择器对话框。这个对话框的外观也是针对操作系统的。所选字体的属性,如名称、大小、重量等,将作为该对话框的返回值返回。
该类构造函数所需的Fontdata参数被用来初始化这些属性。
该类的GetFontData()方法包含所选字体的参数。
下面演示FontDialog的使用的代码有一个按钮和一个标签(StaticText对象)。
按钮被点击后会触发OnClick()事件处理函数。
然后,所选择的字体被应用于标签的文本。
完整的代码如下
上述代码产生的输出结果如下 –