Tkinter Canvas สร้างข้อความด้วย create_text(x, y, text="...", font=(family, size, style)) ฟอนต์กำหนดเป็น Tuple: (font_family, font_size, font_style)
ตัวอย่างโค้ด
from tkinter import *
from tkinter import ttk
win = Tk()
win.geometry("750x250")
canvas = Canvas(win, width=430, height=450)
text_id = canvas.create_text(200, 40, text="Hey, Developers!",
font=('Helvetica', 30, 'bold'))
canvas.pack()
win.mainloop()
รูปแบบ Font Tuple
# (family, size, style)
font=('Helvetica', 12) # แค่ฟอนต์และขนาด
font=('Helvetica', 12, 'bold') # Bold
font=('Helvetica', 12, 'italic') # Italic
font=('Helvetica', 12, 'bold italic') # Bold + Italic
font=('Helvetica', 12, 'underline') # Underline
font=('Helvetica', 12, 'overstrike') # Strikethrough
การเปลี่ยนฟอนต์หลังสร้าง (Item Configuration)
# สร้างข้อความ
text_id = canvas.create_text(100, 100, text="Hello", font=('Arial', 12))
# เปลี่ยนฟอนต์ภายหลัง
canvas.itemconfig(text_id, font=('Times', 24, 'bold italic'))
canvas.itemconfig(text_id, fill='red') # สีข้อความ
canvas.itemconfig(text_id, text="New Text") # เปลี่ยนข้อความ
ฟอนต์ที่มีในระบบ (Platform Dependent)
- Windows: Arial, Times New Roman, Courier New, Consolas, Segoe UI, Calibri
- macOS: Helvetica, Times, Courier, Monaco, Menlo, San Francisco
- Linux: DejaVu Sans, DejaVu Serif, Liberation Sans, Noto Sans, Ubuntu
- Cross-platform safe: TkDefaultFont, TkTextFont, TkFixedFont
การใช้ Font Object (tkinter.font)
import tkinter.font as tkFont
custom_font = tkFont.Font(family='Helvetica', size=18, weight='bold', slant='italic')
canvas.create_text(100, 100, text="Font Object", font=custom_font)
# วัดขนาดข้อความ
width = custom_font.measure("Hello World")
height = custom_font.metrics('linespace')
การประยุกต์ใช้
Game UI, Diagram labels, Chart annotations, Custom drawing apps, Watermark text, Dynamic text sizing