Python tkinter filedialog 開啟檔案對話框

本篇介紹如何在 Python filedialog 中開啟檔案對話框用法與範例,這邊使用 python 內建的 tkinter 的 filedialog 為示範,以下的 Python tkinter filedialog 開啟檔案對話框用法與範例將分為這幾部分,

  • tkinter filedialog 開啟檔案對話框
  • tkinter filedialog 判斷開啟檔案對話框回傳的檔案
  • tkinter filedialog 設定開啟檔案對話框的標題
  • tkinter filedialog 指定一個初始的目錄來開啟檔案
  • tkinter filedialog 設定開啟的檔案類型

那就開始吧!

tkinter filedialog 開啟檔案對話框

Python tkinter 要叫出開啟檔案對話框要使用 filedialog.askopenfilename(),最簡單的使用方法像這樣

1
file_path = filedialog.askopenfilename()

完整的 python 3 使用範例如下,

python3-filedialog-askopenfilename.py
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
print(file_path)

如果是 python 2 的話稍微有點不同,不過大同小異,

python-tkFileDialog-askopenfilename.py
1
2
3
4
5
6
7
8
#!/usr/bin/python
# -*- coding: utf-8 -*-
import Tkinter, tkFileDialog

root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
print(file_path)

接著就把程式執行起來看看吧!程式啟動後會彈出一個開啟檔案的對話框,如下圖所示,

接著選好檔案後,按下OK確定按鈕後 askopenfilename() 就會回傳檔案路徑了。

tkinter filedialog 判斷開啟檔案對話框回傳的檔案

通常程式會需要去判斷使用者是否選擇了一個合法的檔案或者是取消動作根本沒選檔案,
這邊示範最簡單的方法是接著判斷檔案是否為空,不為空的話才繼續做接下來的程式邏輯,
filedialog.askopenfilename() 會回傳的類型為 str,若取消的話會回傳一個空的 tuple ()
判斷 tuple 不為 empty 的寫法可以用 not 運算子,之前在這篇有介紹過,
實際上程式會寫成這樣,

python3-filedialog-askopenfilename2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()

if not file_path:
print('file path is empty')
else:
with open(file_path, 'r') as f:
print(f.read())

tkinter filedialog 設定開啟檔案對話框的標題

filedialog 想要設定一些提示訊息在開啟檔案對話框的標題,來提示使用者到底要開什麼檔案的話,
可以在 filedialog.askopenfilename() 參數裡指定 title
實際上就會寫成這樣,

python3-filedialog-askopenfilename3.py
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(parent=root,
title='Select file')

tkinter filedialog 指定一個初始的目錄來開啟檔案

通常會有個初始的目錄讓使用者去選,但預設的目錄可能離最終目標的目錄差很多層,這樣使用者要點很多次,很不方便,所以會給一個初始目錄,

python3-filedialog-askopenfilename4.py
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(parent=root,
initialdir='~/')

tkinter filedialog 設定開啟的檔案類型

假設使用者只想開啟圖片類型的檔案,又不想看到一堆非圖片類型的檔案例如像 .txt 或其他類型,
否則使用者在選擇檔案時會找很慢,所以有些情況下會去設定開啟的檔案類型,這有助於加速使用者開啟檔案,
可以在 filedialog.askopenfilename() 參數裡指定 filetypes,像這樣

python3-filedialog-askopenfilename5.py
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(parent=root,
filetypes = (("jpeg files","*.jpg"),("all files","*.*")))

以上就是 Python tkinter filedialog 開啟檔案對話框用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它參考
openfiledialog - Quick and easy file dialog in Python? - Stack Overflow
https://stackoverflow.com/questions/9319317/quick-and-easy-file-dialog-in-python
Tkinter Dialogs — Python 3 documentation
https://docs.python.org/3/library/dialog.html
Tkinter tkFileDialog module - Python Tutorial
https://pythonspot.com/tk-file-dialogs/

其它相關文章推薦
Python tkinter 選擇資料夾對話框
Python 新手入門教學懶人包
Python tkinter 新手入門教學