范例 - 打开多个文件
这篇教学会延伸“点击按钮打开文件”文章,同样会使用 tkinter 的 Button 按钮,点击按钮后,进行打开“多个”文件的动作,并在打开文件后,透过 Text 多行输入框显示每个文件的路径。
快速导览:
因为 Google Colab 不支援 tkinter,所以请使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或使用 Anaconda Jupyter 进行实作 ( 参考:使用 Anaconda )。
点击按钮打开多个文件
加载 tkinter 函数库的 filedialog 模组,使用 filedialog.askopenfilenames() 就可以打开多个文件 ( 打开单一文件的方法为 filedialog.askopenfilename() 没有加上 s ),,下方的程序码在视窗里放入一个按钮,点击按钮时执行 show 函数,选择文件后印出文件路径。
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
def show():
files = filedialog.askopenfilenames() # 點擊按鈕時選擇多個檔案
print(files) # 以串列方式印出檔案路徑
btn = tk.Button(root,
text='開啟檔案',
font=('Arial',20,'bold'),
command=show
)
btn.pack()
root.mainloop()
使用 Text 多行输入框显示文件路径
参考“os 常用方法”文章,先将工作目录移动到根目录 ( 因为打开的文件路径是以根目录出发的绝对路径 ),接着参考“Text 多行输入框”文章,在选择并打开文件后,搭配 Text 多行输入框显示这些文件的路径。
import os
os.chdir('/') # 移動路徑到根目錄
import tkinter as tk
from tkinter import Variable, filedialog
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('300x200')
def show():
files = filedialog.askopenfilenames()
for i, e in enumerate(files): # 使用 enumerate 將串列變成帶有索引值的字典
text.insert('end', f'{e}') # Text 從後方加入內容
if i != len(files):
text.insert('end', '\n') # 如果是不是最後一行,都加入換行符號
btn_open = tk.Button(root,
text='開啟檔案',
font=('Arial',20,'bold'),
command=show
)
btn_open.pack()
text = tk.Text(root, height=8) # 加入 Text
text.pack()
root.mainloop()
微信扫码关注
抖音扫码关注