攝影或3C

Python: 如何用tkinter做出 對話 Button GUI? 點Button即可選擇一個或多個檔案 file_paths = filedialog .askopenfilenames (filetypes = ( (“CSV files”, “*.csv”), (“PNG files”, “*.png”), (“All files”,”*.*”) ) ) ; 關閉視窗後Spyder 的 console 自動回到正常狀態,不需要手動按 Ctrl + C ; root.destroy()

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

savingking