from tkinter import Tk, filedialog, Button
root = Tk()
root.geometry("300x50")
root.title("ask open file names")
def open_files():
file_paths = filedialog.askopenfilenames()
print(file_paths)
print(type(file_paths)) #<class 'tuple'>
path_list = list(file_paths)
path_button.config(text=path_list)
path_button = Button(root, text="Select files",
command=open_files,
font=("Arial",24) )
path_button.pack(fill="both",expand=True)
def on_closing():
root.destroy()
import sys
sys.exit(0)
root.protocol("WM_DELETE_WINDOW", func=on_closing)
#如果沒有這一段的話,關閉視窗,Spyder的console不會恢復
#需要ctrl + C 中斷,console才會恢復
root.mainloop()
將on_closing()
函式註冊為關閉視窗事件的處理函式。當使用者關閉視窗時,該函式會被呼叫並結束程式。這樣在關閉視窗後,Spyder 的 console 應該就會回到正常狀態,不需要再手動按 Ctrl + C 了。
WM_DELETE_WINDOW
是一個窗口管理協議,當使用者在視窗上按下關閉按鈕時,這個協議會被觸發。在Tkinter中,可以使用 protocol
方法和 "WM_DELETE_WINDOW"
參數,將視窗關閉事件綁定到一個函數上。這樣,當使用者在視窗上按下關閉按鈕時,就會自動執行這個函數,從而實現一些特定的操作,比如關閉程式之前先執行一些清理工作。
在Tkinter中,func和command都可以作为回调函数使用,但是它们被用在不同的场合。
command通常是Button,Menu,Radiobutton等部件的一个参数,用于在单击该部件时调用的回调函数。它适用于需要处理单击事件的简单按钮和菜单项。
func通常用于在窗口管理协议(如WM_DELETE_WINDOW)中使用。在这种情况下,您需要指定一个函数来处理窗口关闭事件,以便您可以执行自定义操作(例如保存数据)。另外,func还可以在使用after和after_idle方法时作为回调函数使用。
執行結果:
filetypes=((“CSV files”, “.csv”), (“PNG files”, “.png”), (“All files”, “*.*” ) )
做出過濾檔案的功能
輸出結果:
推薦hahow線上學習python: https://igrape.net/30afN