wxPython 文件对话框的使用详解

2025-10-13 11:53:47

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

wxPython 文件对话框的使用详解

2、初始代码程序运行如图

wxPython 文件对话框的使用详解

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

wx.FileDialog的构造器语法为:

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

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

wxPython 文件对话框的使用详解

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

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

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

          

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

通配符定义格式为:

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

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

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

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

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

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

    wx.SAVE:用于保存文件

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

wxPython 文件对话框的使用详解

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()

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢