[转]9.2 使用标准对话框 [wxPython…

转:http://www.cnblogs.com/yoshow/archive/2008/01/30/1058880.html

9.2 使用标准对话框 [wxPython In Action]

9.2 使用标准对话框

大多数操作系统都为像文件选择、字体选择和颜色选择这些任务提供了标准对话 框。这为平台提供了一致感观。你也可以使用来自于wxPython的这些对话框,它们也为你的应用程序提供了一致的感观。如果你使用wxPython,那 么它为你提供了类似的对话框,即使所在的平台没有提供系统对话框。

9.2.1 如何使用文件选择对话框?

在wxPython中,wx.FileDialog为主流的平台使用本地操作系统对话框,对其它操作系统使用非本地相似的外观。微软Windows的版本如图9.6所示。

图9.6
[转]9.2 <wbr>使用标准对话框 <wbr>[wxPython <wbr>In <wbr>Action]

你可以设置文件对话框开始在任一目录,你也可以使用通配符过滤来限制去显示某种文件类型。例9.6显示了一个基本的例子。

例9.6 使用wx.FileDialog

import wx
import os

if __name__ == "__main__":
app = wx.PySimpleApp()
wildcard = "Python source (*.py)|*.py|" 
"Compiled Python (*.pyc)|*.pyc|" 
"All files (*.*)|*.*"
dialog = wx.FileDialog(None, "Choose a file", os.getcwd(), 
"", wildcard, wx.OPEN)
if dialog.ShowModal() == wx.ID_OK:
print dialog.GetPath() 

dialog.Destroy()

文件对话框是我们这章已见过的最复杂的对话框,它有几个属性可以通过编程的方式读写。它的构造函数使得你能够设置它的一些属性:

wx.FileDialog(parent, message="Choose a file", defaultDir="", 
defaultFile="", wildcard="*.*", style=0, 
pos=wx.DefaultPosition)

message 参数出现在窗口的标题栏中。defaultDir参数告诉对话框初始的时候显示哪个目录。如果这个参数为空或表示的目录不存在,那么对话框开始在当前目 录。defaultFile是默认保存为的文件。wildcard参数使你可以基于给定的模式来过滤列表,使用通常的*和?作为通配符。通配符可以是单个 模式,如*.py或格式如<描述>|<模式>|<描述>|<模式>的一系列模式——类似于例9.6中所 用。

"Python source (*.py)|*.py|Compiled Python (*.pyc)|*.pyc| 
All files (*.*)|*.*"

如果有一个多个项目的模式,那么它们显示在图9.6所示的下拉菜单中。pos参数不保证被基本的系统所支持。

选择一个文件

wx.FileDialog的两个最重要的样式标记是wx.OPEN和wx.SAVE,它们表明对话框的类型并影响对话框的行为。

用于打开文件的对话框有两个标记,它们进一步影响对话框的行为。wx.HIDE_READONLY标记灰化复选框,使用户以只读模式打开文件。wx.MULTIPLE标记使用户可以在一个目录中选择打开多个文件。

保存文件对话框有一个有用的标记wx.OVERWRITE_PROMPT,它使得保存文件时,如果有相同的文件存在,则提示用户是否覆盖。

两种文件对话框都可以使用wx.CHANGE_DIR标记。当使用这个标记时,文件的选择也可改变应用程序的工作目录为所选文件所在的目录。这使得下次文件对话框打开在相同的目录,而不需要应用程序再在别处存储该值。

和本章迄今为止我人们所见过的其它对话框不一样,文件对话框的属性directory,filename, style, message, 和wildcard是可以通过方法来得到和设置的。这些方法使用Get/Set命名习惯。

在 用户退出对话框后,如果返回值是wx.OK,那么你可以使用方法GetPath()来得到用户的选择,该函数的返回值是字符串形式的文件全路径名。如果对 话框是一个使用了wx.MULTIPLE标记的打开对话框,则用GetPaths()代替GetPath()。该方法返回路径字符串的一个Python列 表。如果你需要知道在用户选择时使用了下拉菜单中的哪个项,你可以使用GetFilterIndex(),它返回项目的索引。要通过编程改变索引,使用方 法SetFilterIndex()。

这后面的是一个使用文件对话框的便利函数:

wx.FileSelector(message, default_path="", default_filename="", 
default_extension="", wildcard="*.*'', flags=0, parent=None, 
x=-1, y=-1)

message, default_path, default_filename, 和 wildcard参数意义与构造函数的基本相同,尽管参数的名字不同。 flags参数通常被称作style,default_extension参数是保存为文件时默认的后缀(如果用户没有指定后缀的情况下)。如果用户按下 OK,返回值是字符串形式的路径名,如果用户按下Cancel则返回一个空字符串。

选择一个目录

如果用户想去选择一个目录而非一个文件,使用wx.DirDialog,它呈现一个目录树的视图,如图9.7所示。

这个目录选择器比文件对话框简单些。例9.7显示了相关的代码。

例9.7 显示一个目录选择对话框

import wx

if __name__ == "__main__":
app = wx.PySimpleApp()
dialog = wx.DirDialog(None, "Choose a directory:",
style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)
if dialog.ShowModal() == wx.ID_OK:
print dialog.GetPath()
dialog.Destroy()

图9.7
[转]9.2 <wbr>使用标准对话框 <wbr>[wxPython <wbr>In <wbr>Action]

这个对话框的所有的功能几乎都在构造函数中:

wx.DirDialog(parent, message="Choose a directory", defaultPath="", 
style=0, pos = wx.DefaultPosition, size = wx.DefaultSize, 
name="wxDirCtrl") 

由 于message参数显示在对话框中,所以你不需要一个钩子去改变标题栏。defaultPath告诉对话框选择的默认路径,如果它为空,那么对话框显示 文件系统的根目录。pos和size参数在微软Windows下被忽略,name参数在所有的操作系统下都被忽略。该对话框的样式标记 wx.DD_NEW_DIR_BUTTON给对话框一个用于创建目录的一个按钮。这个标记在老版的微软Windows中不工作。

wx.DirDialog类的path, message, 和style属性都有相应的get*和set*方法。你可以使用GetPath()方法来在对话框被调用后获取用户的选择。这个对话框也有一个便利的函数:

wx.DirSelector(message=wx.DirSelectorPromptStr, default_path="", 
style=0, pos=wxDefaultPosition, parent=None)

所有的参数和前面的构造函数相同。如果OK被按下,则该函数返回所选择的字符串形式的目录名,如果按下Cancel,则返回空字符串。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值