Python中使用tkFileDialog實現(xiàn)文件選擇、保存和路徑選擇
使用tkFileDialog實現(xiàn)文件選擇、保存和路徑選擇
概述
看了下Tkinter的文檔,對于Pop-up dialog有三類,現(xiàn)在用到的是tkFileDialog
tkFileDialog有三種形式:
- 一個是:askopenfilename(option=value, …) 這個是”打開”對話框
- 一個是:asksaveasfilename(option=value, …) 這個是另存為對話框
- 另一個是:askdirectory()這個是路徑選擇對話框
option參數(shù)如下:
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 _tkinterimport tkintertkinter._test()
在python3中輸入以上命令進行驗證。
解決方法
Python2中應該寫成
from tkFileDialog import askdirectory
python3中應該寫成
from tkinter.filedialog import askdirectory
tkColorChooser ------------>tkinter.colorchooser
tkCommonDialog --------------->tkinter.commondialog
其他的可以類推。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python爬取數(shù)據(jù)保存為Json格式的代碼示例
今天小編就為大家分享一篇關于Python爬取數(shù)據(jù)保存為Json格式的代碼示例,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04
Python?selenium?webdriver?基本使用代碼分享
這篇文章主要介紹了Python?selenium?webdriver?基本使用,本文僅僅簡單介紹了selenium的使用常用代碼分享,需要的朋友可以參考下2022-11-11

