python 打开文件对话框相关

环境: window7

版本: python 2.7

假设我们有如下这样的需求,如果所示:

1. 通过打开文件,我们可以打开指定的文件,并将其路径显示到输入框中

2. 通过打开目录,我们可以打开指定的目录,并将其路径显示到输入框中

3. 通过另存为,我们可以文件名另存为指定的目录或文件中。

我们可以使用python自带的模块:tkFileDialog其相关的方法示例,可参考:https://www.programcreek.com/python/index/671/tkfiledialog

为了满足如上需求,我们会使用到tkFileDialog的三个方法,为了讲解方便,我们会附上代码说明:

打开文件:

# 打开文件
def openFileEvent(self):
    # 参数相关:
    # defaultextension: 默认文件的扩展名
    # filetypes: 设置文件类型下拉菜单里的的选项
    # initialdir: 对话框中默认的路径
    # initialfile: 对话框中初始化显示的文件名
    # parent: 父对话框(由哪个窗口弹出就在哪个上端)
    # title: 弹出对话框的标题

    # 选择文件后,会返回显示文件的完整路径,取消的话,会返回空字符串
    newDir = tkFileDialog.askopenfilename(initialdir=‘C:\Python27‘,
        initialfile=‘README‘,title=‘打开新文件‘)
    if len(newDir) == 0:
        return
    # 显示新路径内容
    self.csdVar.set(newDir)

其效果图如下:

打开目录

# 打开目录
def openDirEvent(self):
    # 参数相关
    #title: 弹出对话框的标题
    #initialdir:  对话框中默认的路径
    newDir = tkFileDialog.askdirectory(initialdir=‘C:\Python27‘,title=‘打开目录‘)
    # 判定是否选择了文件夹,如果已选择则返回其路径,否则返回空字符
    if len(newDir) == 0:
        return
    # 显示内容
    self.csdVar.set(newDir

效果图如下:

另存为

# 另存为
def selectOutPathEvent(self):
    # 其参数与askopenfilename一样,不再赘述
    newDir = tkFileDialog.asksaveasfilename(initialdir=‘C:\Python27‘)
    if len(newDir) == 0:
        return
    self.outVar.set(newDir)

效果图如下:

其完整的示例Demo:

# -*- coding:utf-8 -*-
# __author__ = ‘Code~‘

import traceback
import Tkinter
from Tkinter import *
import tkFileDialog

DEF_PATH = ‘C:\Python27‘
# 消息框模块
class MsgBox:
    def __init__(self):
        # 目录相关
        self.root = Tkinter.Tk()
        self.showMsgBox()
        self.root.mainloop()

    # 显示消息框
    def showMsgBox(self):
        root = self.root           

        #
        Label(root, text=‘源文件:‘).grid(row=1, column=0, sticky=‘E‘)
        self.csdVar = StringVar()
        self.csdVar.set(DEF_PATH)
        Entry(root, textvariable=self.csdVar, width=50).grid(row=1, column=1)
        Button(root, text=‘打开文件‘, command=self.openFileEvent).grid(row=1, column=2)
        Button(root, text=‘打开目录‘, command=self.openDirEvent).grid(row=1, column=3)

        #
        Label(root, text=‘输出:‘).grid(row=2, column=0, sticky=‘E‘)
        self.outVar = StringVar()
        self.outVar.set(DEF_PATH)
        Entry(root,textvariable=self.outVar, width=50).grid(row=2, column=1)
        Button(root,text=‘另存为‘,command=self.selectOutPathEvent).grid(row=2, column=2)

    # 打开文件
    def openFileEvent(self):
        newDir = tkFileDialog.askopenfilename(initialdir=DEF_PATH,title=‘打开新文件‘)
        if len(newDir) == 0:
            return
        self.csdVar.set(newDir)
    # 打开目录
    def openDirEvent(self):
        newDir = tkFileDialog.askdirectory(initialdir=DEF_PATH,title=‘打开目录‘)
        if len(newDir) == 0:
            return
        self.csdVar.set(newDir)

    # 另存为
    def selectOutPathEvent(self):
        newDir = tkFileDialog.asksaveasfilename(initialdir=DEF_PATH)
        if len(newDir) == 0:
            return
        self.outVar.set(newDir)

if __name__  == "__main__":
    try:
        messageBox = MsgBox()
    except Exception:
        traceback.print_exc()

原文地址:https://www.cnblogs.com/SkyflyBird/p/10344019.html

时间: 2024-10-13 00:44:12

python 打开文件对话框相关的相关文章

python 打开文件对话框 filedialog tkinter GUI 编程

- -读取文件的gui编程 1 # _*_ coding:utf-8 _*_ 2 3 import tkinter 4 from tkinter import filedialog 5 6 def openfiles2(): 7 s2fname = filedialog.askopenfilename(title='打开S2文件', filetypes=[('S2out', '*.out'), ('All Files', '*')]) 8 print(s2fname) 9 def openfil

如何找到文件的家-打开文件对话框openFileDialog

private void button1_Click(object sender, EventArgs e) { openFileDialog1.Filter = "*.txt|*.txt";//设置文件 DialogResult dr = openFileDialog1.ShowDialog();//显示打开文件对话框 if (dr ==DialogResult.OK) { richTextBox1.Text = System.IO.File.ReadAllText(openFile

python打开文件可以有多种模式

一.python打开文件可以有多种模式,读模式.写模式.追加模式,同时读写的模式等等,这里主要介绍同时进行读写的模式r+ python通过open方法打开文件 file_handler = open(filename,mode) mode的模式有以下几种 r 以读方式打开文件,可读取文件信息. w 以写方式打开文件,可向文件写入信息.如文件存在,则清空该文件,再写入新内容 a 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建 r+ 以读写方式打开文件,可对文件进

WebBrowser自动填充打开文件对话框

WebBrowser自动填充打开文件对话框 在使用WebBrowser编写自动表单填写软件的时候,不知道大家是否遇到国填写文件选择表单的情况.遇到这种情况的时候,无法直接队Html元素赋值,必须模拟手工选择的办法(是否有其它解决办法,不得而知),下面我们来说一下我的解决办法,如下: 1.先说一下正常表单的填写方式,在Delphi+WebBrowser的环境下,可采用如下代码: 1 WebBrowser.OleObject.document.all.item('XXX', 0).value :=x

VS MFC CFileDialog类 打开文件对话框和另存为对话框

1 explicit CFileDialog( 2 BOOL bOpenFileDialog, 指定的参数创建哪种类型的对话框. 设置到构造 文件已打开 对话框的 TRUE. 设置到构造 保存文件 对话框的 FALSE. 3 LPCTSTR lpszDefExt = NULL, 默认的文件扩展名. 如果用户在文件名框中不包括包含在用户的计算机上的关联) 的已知扩展 (一,lpszDefExt 指定的扩展自动追加到文件名. 如果此参数是 NULL,扩展不是追加. 4 LPCTSTR lpszFil

QT 打开文件对话框总结

Qstring fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ",  tr("Allfile(*.*);;mp3file(*.mp3)")); 说明:这样就会产生一个对话框,和系统的资源管理器差不多的.返回的是你选择文件的 绝对路径. 参数1:父窗口 参数2:对话框的标题 参数3:默认的打开的位置,如"我的文档"等 参数4:文件的过滤器,注意文

MFC程序打开文件对话框出错的问题解决

前几天从网上下了个图像分析的mfc小程序,是VC6的 用VC6在本地编译生成都没问题,运行起来弹出一个未处理的错误,程序崩溃退出. 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究. 这次要好好看下这个问题. 具体做法就是深入细致的跟踪.跟踪.跟踪... 应用代码,跟进 MFC的代码,跟进 Alt+8调出反汇编,跟进... 反复多次重复追踪.缩小目标,确定问题是:在CFileDialog 的析构函数中,调用了CString 的析构函数, 恰恰是析构CSring 出错了. CFi

vc 添加打开文件对话框并读取文件

转自:http://blog.csdn.net/halibobo520/article/details/3371944 1.创建打开文件对话框:                                   CFileDialog dlg(TRUE,//TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框                                  ".txt",//默认的打开文件的类型                              

java中文件保存、打开文件对话框

1 package com.soft.test; 2 3 //AWT: FileDialog类 + FilenameFilter类 可以实现本功能 4 //Swing: JFileChooser类 + FileFilter类 可以实现本功能 5 // 6 //该类用来测试打开文件和保存文件的对话框 7 8 import java.awt.*; //为了使用布局管理器 9 import java.awt.event.*;//用来处理事件 10 import javax.swing.*; //最新的