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

目录

使用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   

其他的可以类推。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容