wxPython 对话框类
尽管一个 对话框类 对象看起来像一个 窗口 ,但通常它被用作父窗口上方的弹出窗口。对话框的目的是从用户那里收集一些数据并将其发送给父窗口。对话框窗口可以是模态的(阻塞父窗口)或非模态的(可以绕过对话框窗口)。 ShowModal()方法以模态的方式显示对话框窗口,而Show()方法使其变为非模态。
wxPython有许多预配置的对话框小部件,例如MessageDialog、FileDialog、FontDialog等。
与wx.Frame对象一样,wx.Dialog支持使用Sizers。因此,可以设计自定义的对话框。
Wx.Dialog类的构造函数接受以下常用参数 –
默认情况下,Dialog窗口小部件的标题栏只显示关闭框。但是,可以使用以下样式参数的组合进行自定义。
以下是Dialog最常用的参数。
序号 | 参数和描述 |
---|---|
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 防止创建孤立的对话框。不推荐用于模态对话框 |
为此类定义了两个事件绑定器。
以下是Dialog最常用的事件。
序号 | 事件和描述 |
---|---|
1 | EVT_CLOSE 当用户或程序关闭对话框时 |
2 | EVT_INIT_DIALOG 当对话框被初始化时 |
如上所述,Dialog的目标是收集数据并返回给父窗口。但是,Dialog类还提供了一些有用的方法。
下面是对话框最常用的方法说明。
序号 | 方法 & 描述 |
---|---|
1 | DoOK() 当对话框的OK按钮被按下时调用 |
2 | ShowModal() 以应用程序模态方式显示对话框 |
3 | ShowWindowModal() 对话框仅模态于顶层父窗口 |
4 | EndModal() 结束模态对话框,并传递ShowModal的调用传值 |
其中一个预配置的对话框是MessageDialog。它用于显示一个或多个行的消息,带有具有标准ID的按钮。下面是MessageDialog上的标准按钮的选择列表。
下面是对话框最常用的按钮说明。
序号 | 按钮 & 描述 |
---|---|
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 显示一个问号图标 |
MessageDialog
使用以下构造函数声明 –
要显示的文本的一行或多行是 message 参数,而标题将显示在标题栏上。默认 style 参数为 wx.OK|wx.ECNRE。其他的 style 参数允许自定义消息框。
wx.MessageBox 是一个便利函数,用于构建消息框,而不是使用 MessageDialog。
示例
以下是一个简单的模态和非模态对话框行为示例。父窗口是一个具有两个按钮的 wx.Frame 对象。单击第一个按钮以模态方式显示一个对话框。因此,在对话框关闭之前,禁止对父窗口进行任何操作。第二个按钮显示一个非模态对话框,不会阻碍对父窗口的访问。第三个按钮显示一个消息框。
完整的代码如下所示:
以上代码产生以下输出 –
wx.TextEntryDialog
该类的对象显示一个带有一个文本框的对话框,可自定义标签提示用户输入,并带有两个具有预定义样式的按钮。
尽管此对话框要求输入一行文本,但可以使用TextCtrl样式(如password和multiline)自定义文本框。
当用户点击确定按钮时,将收集文本框中的内容作为返回值。
TextEntryDialog构造函数如下所示:
要显示在对话框窗口上的文本是作为消息参数传递的。标题栏中要显示的字符串是标题参数。文本框中的默认字符串是值参数。对话框中的TextCtrl可以配置为显示密码字符(wx.TE_PASSWORD)和/或多行文本(wx.TE_MULTILINE)。
TextEntry类的其他方法如下表所示 –
以下是TextEntry最常用的方法。
序号 | 方法和描述 |
---|---|
1 | SetMaxLength() - 设置用户可以输入到文本框中的最大字符数 |
2 | SetValue() - 以编程方式设置文本框的值 |
3 | GetValue() - 返回文本框的内容 |
4 | ShowModal() - 以模态显示对话框。如果用户确认输入,则返回wx.ID_OK,如果对话框被拒绝,则返回wx.ID_CANCEL |
示例
以下示例中的顶层框架显示了一个按钮和一个只读的TextCtrl小部件。
按钮响应点击事件,并调用 OnClick() 函数。
OnClick()函数会显示一个TextEntryDialog。
对话框的返回值通过GetValue()函数获取,并在顶层框架的TextCtrl对象中显示。
完整的代码如下:
上面的代码产生以下输出 –
wx.FileDialog 类
此类表示文件选择对话框。它使用户可以浏览文件系统并选择要打开或保存的文件。对话框的外观是特定于操作系统的。
还可以应用文件过滤器来仅显示特定扩展名的文件。还可以设置起始目录和默认文件名。
FileDialog 构造函数的原型如下所示−
该消息表示要显示的文本。DefaultDir是初始目录。可以将一个或多个文件类型设置为通配符参数表示的文件过滤器。
为FileDialog定义的样式参数为-
下面是FileDialog最常用的参数。
序号 | 参数和描述 |
---|---|
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 将当前工作目录更改为用户选择的文件所在的目录 |
FileDialog类的成员函数:
下面是wx.FileDialog最常用的函数
序号 | 函数和描述 |
---|---|
1 | GetDirectory() 返回默认目录 |
2 | GetFileName() 返回默认文件名 |
3 | GetPath() 返回选定文件的完整路径 |
4 | SetDirectory() 设置默认目录 |
5 | SetFilename() 设置默认文件 |
6 | SetPath() 设置完整路径 |
7 | ShowModal() 显示对话框,如果用户点击确定按钮则返回wx.ID_OK,否则返回wx.ID_CANCEL |
示例
在以下示例中,顶层框架显示一个按钮和一个多行文本控件。
EVT_BUTTON事件绑定器将OnClick()函数与按钮关联。
OnClick()函数以打开模式显示一个FileDialog。其选择将作为dlg返回。通过GetPath()函数获得所选文件,并在父窗口的TextCtrl框中显示其内容。
完整代码如下:
以上代码产生以下输出−
wx.FontDialog 类
这个类的对象是一个字体选择对话框。该对话框的外观也是特定于操作系统的。所选字体的属性,如名称、大小、粗细等,会作为该对话框的返回值返回。
用于该类构造函数的 Fontdata 参数用于初始化这些属性。 wx.FontDialog(parent, data)
这个类的 GetFontData() 方法包含了所选择字体的参数。
下面的代码演示了 FontDialog 的使用,其中包括一个按钮和一个标签(StaticText 对象)。
当按钮被点击时,触发OnClick()事件处理程序函数。
然后将选择的字体应用于标签的文字。
完整的代码如下:
上述代码产生以下输出 –