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
其他的可以類推。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Python Tkinter對話框控件使用詳解
- 教你用python實現一個加密的文字處理器
- python tkinter庫的Text記錄點擊路經和刪除記錄詳情
- Python GUI 圖形用戶界面
- python使用tkinter模塊實現文件選擇功能