Python中使用tkFileDialog实现文件选择、保存和路径选择
作者:blingbling_110 发布时间:2022-02-17 09:35:32
使用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
其他的可以类推。
来源:https://blog.csdn.net/weixin_44256803/article/details/86571383


猜你喜欢
- 1. 搭建项目配置环境和创建表创建一个ttsx的项目django-admin startproject ttsx在ttsx下的__init_
- 在CSS中,实现分栏布局有两种方法。第一种方法是使用四种CSS定位选项(absolute 、static、relative和fixed)中的
- 1 , javascript字符集:javascript采用的是Unicode字符集编码。为什么要采用这个编码呢?原因很简单,16位的Uni
- 之前对mac os系统自带的python进行了升级,结果发现新安装的python的site-packages目录并没有加到python的系统
- 前言看文档不认真,开发也没有多注意,总是hack。忽悠忽悠就过去,但怎么说,歪门邪道还是不太好,现在就亡羊补牢,总结总结。数组索引使用下标更
- 1前言我们本节来看看我们常说的索引下推。2什么是索引下推索引下推(Index Condition Pushdown,简称ICP),是MySQ
- 本文介绍了python 支持向量机非线性回归SVR模型,废话不多说,具体如下:import numpy as npimport matplo
- 数据结构与算法将序列分解为单独的变量问题:现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给 N 个变量?解答:任
- 废话不多说,直接上代码:# coding:utf-8from urllib import requestfrom urllib import
- 这里首先给出来我很早之前写的一篇博客,Python实现去除列表中重复元素的方法小结【4种方法】,感兴趣的话可以去看看,今天是在实践过程中又积
- Django的权限系统很简单,它可以赋予users或groups中的users以权限。Django admin后台就使用了该权限系统,不过也
- 本文介绍了python中的计时器timeit的使用方法,分享给大家,具体如下:timeit通常在一段程序的前后都用上time.time(),
- 1. ES语法的getter和setter在开始了解 Vue 的数据响应式原理前应该先搞清楚 ES语法 中的 getter 和 setter
- 本文实例为大家分享了bootstrap实现收缩导航条的具体代码,供大家参考,具体内容如下效果图 贴上我的代码<!DocType htm
- itchat是一个开源的微信个人号接口,可以使用该库进行微信网页版中的所有操作,比如:所有好友、添加好友、拉好友群聊、微信机器人等等。详细用
- 前言python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时
- 本文实例讲述了Python验证码识别的方法。分享给大家供大家参考。具体实现方法如下:#encoding=utf-8import Image,
- 本文实例讲述了python使用正则表达式匹配字符串开头并打印的方法。分享给大家供大家参考,具体如下:import res="nam
- Python面向对象编程(一)Python面向对象编程(二)Python面向对象编程(三)和其它编程语言相比,Python 在尽可能不增加新
- 1. 前言python除了丰富的第三方库外,本身也提供了一些内在的方法和底层的一些属性,大家比较常用的如dict、list、set、min、