多数GUI程序都需要从文件保存或加载数据,wxPython为此为我们提供了标准的文件对话框wx.FileDialog,本文就此进行详细介绍其使用方法。
对话框参数介绍
parent:对话框父窗口,如果没有则为None
defaultDir:默认目录,建议置空,这将使程序在视窗系统上使用默认当前用户的“文档”目录
defaultFile:默认文件名,建议在打开文件时置空,在保存文件是设置默认文件名,以便让你的程序更加人性化,大部分视窗程序都是这样做的。
wildcard:打开或保存文件的通配符,为了代码重构,建议设置为类属性,毕竟打开和保存都会用到。
通配符定义格式为:
wildcard='文本文件(*.txt)|*.txt|所有文件(*.*)|*.*'
style:对话框样式,主要有以下几种:
wx.CHANGE_DIR:当用户选择文件后,当前工作目录相应改变到文件位置
wx.MULTIPLE:只适用于打开对话框,此样式可以让用户一次选择多个文件
wx.OPEN:用于打开一个文件
wx.OVERWRITE_PROMPT:只适用于保存文件对话框,用于显示一个提示确认覆盖文件,如果此文件已经存在
wx.SAVE:用于保存文件
END
附原代码
#!/usr/bin/env python3
# encoding: utf-8
'''
Created on 2018年8月24日
@author: bdwjh
'''
import wx # 导入wxPython
import os
class Frame(wx.Frame): # 定义GUI框架类
wildcard='文本文件(*.txt)|*.txt|所有文件(*.*)|*.*'
# 框架初始化方法
def __init__(self, parent=None, id=-1, pos=wx.DefaultPosition,
title='wxPython 文件对话框使用详解'):
wx.Frame.__init__(self, parent, id, title,
pos, size=(600, 300))
self.panel = wx.Panel(self)
self.openBtn = wx.Button(self.panel, -1, '打开', pos=(50, 100))
self.openBtn.Bind(wx.EVT_BUTTON, self.OnOpen)
self.saveAsBtn = wx.Button(self.panel, -1, '另存为', pos=(150, 100))
self.saveAsBtn.Bind(wx.EVT_BUTTON, self.OnSaveAs)
def OnOpen(self, event):
dlg = wx.FileDialog(self, message='打开文件',
defaultDir='',
defaultFile='',
wildcard=self.wildcard,
style=wx.FD_OPEN)
if dlg.ShowModal() == wx.ID_OK:
file = dlg.GetPath()
print(file)
dlg.Destroy()
def OnSaveAs(self, event):
dlg = wx.FileDialog(self, '另存为', os.getcwd(),
defaultFile='我的文件.txt',
style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT,
wildcard=self.wildcard)
if dlg.ShowModal() == wx.ID_OK:
file = dlg.GetPath()
print(file)
dlg.Destroy()
class App(wx.App): # 定义应用程序类
def OnInit(self): # 类初始化方法
self.frame = Frame()
self.frame.Show(True)
self.SetTopWindow(self.frame) # 设置顶层框架
return True
def main(): # 定义主函数用于启动GUI界面
app = App()
app.MainLoop()
if __name__ == '__main__': # 使用__name__检测当前模块
main()
END







