Python中使用tkFileDialog实现文件选择、保存和路径选择


Posted in Python onMay 20, 2022

使用tkFileDialog实现文件选择、保存和路径选择

概述

看了下Tkinter的文档,对于Pop-up dialog有三类,现在用到的是tkFileDialog

tkFileDialog有三种形式:

  • 一个是:askopenfilename(option=value, …) 这个是”打开”对话框
  • 一个是:asksaveasfilename(option=value, …) 这个是另存为对话框
  • 另一个是:askdirectory()这个是路径选择对话框

option参数如下:

  • defaultextension = s 默认文件的扩展名
  • filetypes = [(label1, pattern1), (label2, pattern2), …] 设置文件类型下拉菜单里的的选项
  • initialdir = D 对话框中默认的路径
  • initialfile = F 对话框中初始化显示的文件名
  • parent = W 父对话框(由哪个窗口弹出就在哪个上端)
  • title = T 弹出对话框的标题

如果选中文件的话,确认后会显示文件的完整路径,否则单击取消的话会返回空字符串

示例

#coding=UTF-8    
import Tkinter, Tkconstants, tkFileDialog  
class TkFileDialogExample(Tkinter.Frame):  

    def __init__(self, root):  
        Tkinter.Frame.__init__(self, root)  
        # options for buttons  
        button_opt = {'fill': Tkconstants.BOTH, 'padx': 5, 'pady': 5}  

        # define buttons  
        Tkinter.Button(self, text='askopenfile', command=self.askopenfile).pack(**button_opt)  
        Tkinter.Button(self, text='askopenfilename', command=self.askopenfilename).pack(**button_opt)  
        Tkinter.Button(self, text='asksaveasfile', command=self.asksaveasfile).pack(**button_opt)  
        Tkinter.Button(self, text='asksaveasfilename', command=self.asksaveasfilename).pack(**button_opt)  
        Tkinter.Button(self, text='askdirectory', command=self.askdirectory).pack(**button_opt)  

        # define options for opening or saving a file  
        self.file_opt = options = {}  
        options['defaultextension'] = '.txt'  
        options['filetypes'] = [('all files', '.*'), ('text files', '.txt')]  
        options['initialdir'] = 'C:\\'  
        options['initialfile'] = 'myfile.txt'  
        options['parent'] = root  
        options['title'] = 'This is a title'  

        # This is only available on the Macintosh, and only when Navigation Services are installed.  
        #options['message'] = 'message'  

        # if you use the multiple file version of the module functions this option is set automatically.  
        #options['multiple'] = 1  

        # defining options for opening a directory  
        self.dir_opt = options = {}  
        options['initialdir'] = 'C:\\'  
        options['mustexist'] = False  
        options['parent'] = root  
        options['title'] = 'This is a title'  

    def askopenfile(self):  

        """Returns an opened file in read mode."""  

        return tkFileDialog.askopenfile(mode='r', **self.file_opt)  

    def askopenfilename(self):  

        """Returns an opened file in read mode. 
        This time the dialog just returns a filename and the file is opened by your own code. 
        """  

        # get filename  
        filename = tkFileDialog.askopenfilename(**self.file_opt)  

        # open file on your own  
        if filename:  
            return open(filename, 'r')  

    def asksaveasfile(self):  

        """Returns an opened file in write mode."""  

        return tkFileDialog.asksaveasfile(mode='w', **self.file_opt)  

    def asksaveasfilename(self):  

        """Returns an opened file in write mode. 
        This time the dialog just returns a filename and the file is opened by your own code. 
        """  

        # get filename  
        filename = tkFileDialog.asksaveasfilename(**self.file_opt)  

        # open file on your own  
        if filename:  
            return open(filename, 'w')  

    def askdirectory(self):  

        """Returns a selected directoryname."""  

        return tkFileDialog.askdirectory(**self.dir_opt)  

if __name__ == '__main__':  
    root = Tkinter.Tk()  
    TkFileDialogExample(root).pack()  
    root.mainloop()

ImportError: No module named 'tkFileDialog'问题

原因

python2和pyton3的版本问题。python3之后的版本自带有tkinter.

验证

  • import _tkinter
  • import tkinter
  • tkinter._test()

在python3中输入以上命令进行验证。

解决方法

Python2中应该写成  

from tkFileDialog import askdirectory

python3中应该写成  

from tkinter.filedialog import askdirectory

tkColorChooser ------------>tkinter.colorchooser
tkCommonDialog --------------->tkinter.commondialog   

其他的可以类推。


Tags in this post...

Python 相关文章推荐
Python中的迭代器漫谈
Feb 03 Python
python中range()与xrange()用法分析
Sep 21 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
python、java等哪一门编程语言适合人工智能?
Nov 13 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
关于python多重赋值的小问题
Apr 17 Python
学习python分支结构
May 17 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
Python实现验证码识别
Jun 15 Python
使用Python pip怎么升级pip
Aug 11 Python
Python中的变量与常量
Nov 11 Python
python多次执行绘制条形图
Apr 20 Python
Python Flask实现进度条
May 11 #Python
Python PIL按比例裁剪图片
May 11 #Python
python 学习GCN图卷积神经网络
May 11 #Python
Python+Pillow+Pytesseract实现验证码识别
May 11 #Python
Python 绘制多因子柱状图
PyCharm 配置SSH和SFTP连接远程服务器
May 11 #Python
Python 文字识别
May 11 #Python
You might like
一个改进的UBB类
2006/10/09 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
python实现顺序表的简单代码
2018/09/28 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
python实现连连看游戏
2020/02/14 Python
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
init进程的作用
2012/04/12 面试题
自我反省检讨书
2014/01/23 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
户外宣传策划方案
2014/05/25 职场文书
生产助理岗位职责
2014/06/18 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
践行三严三实心得体会
2014/10/13 职场文书
老公保证书
2015/01/17 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书