攝影或3C

Python GUI: 如何使用tkinter建立垃圾桶icon (Unicode: “\U0001F5D1”)的Button?一按就刪除掉Label + Entry + Button ; trash_icon = tk.PhotoImage( file = trash_icon_path)

import tkinter as tk

root = tk.Tk()

# 創建 Frame包含按鈕列表框選擇的項目和 Entry
frame = tk.Frame(root)

# 刪除按鈕
def delete_selected():
    frame.destroy()

# 列表框選擇的項目
selected_item = "UFA125A"
selected_label = tk.Label(frame, 
text=selected_item)
selected_label.pack(side=tk.LEFT)

# Entry
length_entry = tk.Entry(frame)
length_entry.pack(side=tk.LEFT)

frame.pack()

# 創建圖示
trash_icon_path = r"C:\Temp\trash.PNG"  
# 根據實際圖示的路徑進行調整
trash_icon = tk.PhotoImage(file=trash_icon_path)
#pyimage42 <class 'tkinter.PhotoImage'>

# 創建按鈕並設置圖示和命令
delete_button = tk.Button(frame, image=trash_icon, 
command=delete_selected)
delete_button.pack(side=tk.LEFT)

# 儲存圖像對象的參考
delete_button.image = trash_icon
#沒這一行的話會觸發TclError: image "pyimage12" doesn't exist

root.mainloop()

tk.PhotoImage(file=trash_icon_path) 是 Tkinter 中用於創建圖像物件的方法之一。它接受圖像文件的路徑作為參數,並返回一個 Tkinter 中可用的圖像對象。

在使用此方法時,請確保 trash_icon_path 變數中存儲的是圖像文件的正確路徑。該路徑應包含圖像文件的檔名和擴展名,例如 trash_icon_path = "path/to/trash.png"

輸出結果:

按垃圾桶圖示後
(一次刪除Label+Entry+Button):

使用 “\U0001F5D1” 這個 Unicode 字符作為按鈕的文字標籤,同時選擇了支援該符號的字體(在這個例子中是 Arial)和合適的字體大小。

注意,使用 Unicode 字符作為按鈕標籤的方法可能會受限於操作系統和所選的字體,因此結果可能會因系統和字體而異。如果需要更精確地控制按鈕外觀,使用圖像可能是更適合的選擇。

“\U0001F5D1” 是 Unicode 字符,表示一個垃圾桶的圖示。你可以在 Unicode 字符表中查詢各種符號和表情符號的對應 Unicode 碼。

有幾個網站提供 Unicode 字符表和搜尋功能,你可以使用這些網站來查詢特定符號的 Unicode 碼。

以下是一些常用的 Unicode 字符表網站:

  1. Unicode 官方網站:https://unicode.org/charts/
  2. Unicode Lookup:https://unicode-table.com/
  3. FileFormat.info:https://www.fileformat.info/info/unicode/

可以在這些網站中搜索 “garbage”、”trash” 或 “bin” 等相關關鍵字,找到垃圾桶圖示的 Unicode 碼。

使用 Unicode 字符作為按鈕標籤的方法確實可能會受限於操作系統和所選的字體。不同的操作系統和字體對於支援和渲染 Unicode 字符的能力可能有所不同。

Unicode 字符的呈現取決於操作系統、字體和字型設置。如果所選的字體中不包含指定的 Unicode 字符,則可能會顯示為空白方塊或其他占位符符號。

在使用 Unicode 字符作為按鈕標籤時,建議測試和驗證在目標操作系統和字體中的呈現效果,以確保所選字符在該環境中能夠正確顯示。

另外,如果確保垃圾桶圖示可以正確顯示非常重要,則使用圖像作為按鈕的內容可能是更可靠和一致的選擇,因為它不受操作系統和字體的限制。


調整垃圾桶圖示的大小

import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()

# 創建 Frame包含按鈕列表框選擇的項目和 Entry
frame = tk.Frame(root)
frame.pack()
# 刪除按鈕
def delete_selected():
    frame.destroy()

# 列表框選擇的項目
selected_item = "UFA125A"
selected_label = tk.Label(frame, 
text=selected_item)
selected_label.pack(side=tk.LEFT)

# Entry
length_entry = tk.Entry(frame)
length_entry.pack(side=tk.LEFT)

#frame.pack()

# 創建圖示
trash_icon_path = r"C:\Temp\trash.PNG"  
# 根據實際圖示的路徑進行調整
# trash_icon = tk.PhotoImage(file=trash_icon_path)

image = Image.open(trash_icon_path)
width, height = 15, 15
resized_image = image.resize((width, height), Image.ANTIALIAS)
trash_icon = ImageTk.PhotoImage(resized_image)

# 創建按鈕並設置圖示和命令
delete_button = tk.Button(frame, image=trash_icon, 
command=delete_selected)
delete_button.pack(side=tk.LEFT)

# 儲存圖像對象的參考
delete_button.image = trash_icon
#沒這一行的話會觸發TclError: 
#image "pyimage12" doesn't exist
root.mainloop()

輸出結果:

每一個垃圾桶icon都有自己的frame:

import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()
root.geometry("200x100")

# 創建主框架
main_frame = tk.Frame(root)
main_frame.pack()

# 創建項目列表
items = ["Item 1", "Item 2", "Item 3"]

# 創建項目框架和按鈕
for item in items:
    item_frame = tk.Frame(main_frame)
    item_frame.pack(side=tk.TOP, padx=10, pady=5)

    # 刪除按鈕
    def delete_item(frame):
        frame.destroy()

    # 項目標籤
    item_label = tk.Label(item_frame, text=item)
    item_label.pack(side=tk.LEFT)

    # 創建圖示
    trash_icon_path = r"C:\Temp\trash.PNG"  
    # 根據實際圖示的路徑進行調整
    trash_icon = Image.open(trash_icon_path)
    resized_icon = trash_icon.resize((20, 20), Image.ANTIALIAS)
    tk_image = ImageTk.PhotoImage(resized_icon)

    # 刪除按鈕
    delete_button = tk.Button(item_frame, image=tk_image, 
                              command=lambda frame=item_frame: 
                              delete_item(frame))
    delete_button.pack(side=tk.LEFT)

    # 儲存圖像對象的參考
    delete_button.image = tk_image

root.mainloop()

輸出結果:

TclError是Tkinter中的一個異常類型,表示發生了與Tcl/Tk庫相關的錯誤。Tcl/Tk是Tkinter庫的底層實現,它提供了用於創建圖形用戶界面的工具和函數。

TclError通常在以下情況下被觸發:

  1. 圖像文件不存在或無法讀取:當你指定一個無效的圖像文件路徑或圖像文件無法被讀取時,就會引發TclError錯誤。
  2. 無效的Tkinter對象或資源:當你嘗試訪問一個不存在的Tkinter對象或資源時,例如未初始化的對象、已經被刪除的對象,或者對象的屬性不存在,就可能引發TclError錯誤。
  3. Tcl/Tk庫操作失敗:在使用Tkinter庫時,與Tcl/Tk庫進行交互的操作可能會失敗,例如創建窗口、設置屬性、綁定事件等。當這些操作無法成功執行時,就會引發TclError錯誤。

當你遇到TclError錯誤時,建議檢查相關的程式碼並確保沒有錯誤或無效的操作。特別要注意圖像文件的路徑是否正確、對象是否被正確初始化和訪問、庫操作是否按照正確的順序和方式執行。

推薦hahow線上學習python: https://igrape.net/30afN

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡