wxPython 文件对话框的使用详解

  • 原创
  • |
  • 浏览:3487
  • |
  • 更新:
  • |
  • 标签:软件 PYTHON 

多数GUI程序都需要从文件保存或加载数据,wxPython为此为我们提供了标准的文件对话框wx.FileDialog,本文就此进行详细介绍其使用方法。

工具/原料

  • Zend Studio + Pydev
  • 或 pycharm

新建文件交粘贴初始代码

  1. 1

    使用编辑器将以下代码录入,这些代码通常可以看作是使用wxPython进行GUI编程的初始固定代码,我们主要修改的是GUI框架类的内容。

    wxPython 文件对话框的使用详解
  2. 1
    此文章非法爬取自百度经验
  3. 2

    初始代码程序运行如图

    wxPython 文件对话框的使用详解
    END

打开文件对话框使用

  1. 1

    修改上述代码OnOpen(self, event)方法

    wx.FileDialog的构造器语法为:

    wx.FileDialog(parent, message="对话框标题", defaultDir='默认目录', defaultFile='默认文件', wildcard='*.*', style=0)

    要显示文件对话框,必须使用ShowModal()方法。

    wxPython 文件对话框的使用详解
    END

对话框参数介绍

  1. 1

    parent:对话框父窗口,如果没有则为None

  2. 2

    defaultDir:默认目录,建议置空,这将使程序在视窗系统上使用默认当前用户的“文档”目录

  3. 3

    defaultFile:默认文件名,建议在打开文件时置空,在保存文件是设置默认文件名,以便让你的程序更加人性化,大部分视窗程序都是这样做的。

              

  4. 4

    wildcard:打开或保存文件的通配符,为了代码重构,建议设置为类属性,毕竟打开和保存都会用到。

    通配符定义格式为:

           wildcard='文本文件(*.txt)|*.txt|所有文件(*.*)|*.*'

  5. 5

    style:对话框样式,主要有以下几种:

        wx.CHANGE_DIR:当用户选择文件后,当前工作目录相应改变到文件位置

        wx.MULTIPLE:只适用于打开对话框,此样式可以让用户一次选择多个文件

        wx.OPEN:用于打开一个文件

        wx.OVERWRITE_PROMPT:只适用于保存文件对话框,用于显示一个提示确认覆盖文件,如果此文件已经存在

        wx.SAVE:用于保存文件

    END

另存文件对话框使用

  1. 1

    和打开文件对话框基本相同

    wxPython 文件对话框的使用详解
    END

注意事项

  1. 1

    本文没有谈及保存对话框,那是因为保存都是针对已知文件名的处理,对于非已知文件名的内容均为另存为哦

    END

附原代码

  1. 1

    #!/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
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
相关标签软件PYTHON