Tkinter แสดงไอคอนใบไม้ (Feather/Tk logo) เริ่มต้นบน Title bar สามารถเปลี่ยนได้ด้วยเมธอด win.iconbitmap("path/to/icon.ico") ต้องใช้ไฟล์ .ico (Windows) หรือ .xbm (Linux)
ขั้นตอนการทำงาน
- เตรียมไฟล์ไอคอน .ico (ขนาดแนะนำ 16x16, 32x32, 48x48)
- สร้าง Root Window
- เรียก
win.iconbitmap("favicon.ico")ก่อนmainloop()
ตัวอย่างโค้ด
from tkinter import *
win = Tk()
win.geometry("750x250")
# เปลี่ยนไอคอน (ต้องมีไฟล์ favicon.ico ในโฟลเดอร์เดียวกัน)
win.iconbitmap("favicon.ico")
Label(win, text="Transparent Icon Window", font=('Lucida 15')).pack()
win.mainloop()
รูปแบบไฟล์ที่รองรับ
| OS | Format | หมายเหตุ |
|---|---|---|
| Windows | .ico | รองรับหลายขนาดในไฟล์เดียว |
| Linux/X11 | .xbm, .png (via PhotoImage) | ใช้ iconphoto() แทน |
| macOS | .icns | ใช้ bundle icon แทน |
วิธี Cross-platform: ใช้ iconphoto()
from tkinter import *
from PIL import Image, ImageTk
win = Tk()
win.geometry("750x250")
# โหลด PNG แล้วแปลงเป็น PhotoImage
img = Image.open("icon.png")
photo = ImageTk.PhotoImage(img)
# ตั้งไอคอน (ทำงานได้ทุก OS)
win.iconphoto(True, photo) # True = default for all toplevel windows
Label(win, text="Custom Icon (PNG)").pack()
win.mainloop()
สร้างไฟล์ .ico จาก PNG
# ใช้ Pillow
from PIL import Image
img = Image.open("icon.png")
img.save("favicon.ico", format='ICO', sizes=[(16,16), (32,32), (48,48), (64,64)])
# หรือใช้ Online converter: favicon.io, convertio.co, etc.
การประยุกต์ใช้
จำเป็นสำหรับ: Branding แอปพลิเคชัน Professional software distribution, ทำให้แอปดูเป็นทางการ ไม่ใช่ "Tkinter default app"