Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีตั้งค่าความสูงแถวใน Tkinter TreeView

Widget Treeview ใน Tkinter ใช้แสดงข้อมูลในรูปแบบตารางที่มีแถวและคอลัมน์ สามารถปรับแต่งคุณสมบัติต่างๆ ได้ เช่น สี ขนาด ความกว้างคอลัมน์ และ ความสูงแถว (Row Height)

วิธีตั้งค่าความสูงแถว

ใช้ ttk.Style ร่วมกับคุณสมบัติ rowheight เพื่อกำหนดความสูงของแต่ละแถวใน Treeview ค่านี้จะเพิ่ม Padding ภายในแต่ละแถว

ตัวอย่างโค้ด

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Treeview Row Height Demo")
root.geometry("700x400")

# สร้าง Style และตั้งค่าความสูงแถว
style = ttk.Style()
style.theme_use('clam')  # ธีมที่รองรับการปรับแต่งได้ดี

# กำหนด rowheight = 40 พิกเซล (ค่าเริ่มต้นประมาณ 20-25)
style.configure("Custom.Treeview", rowheight=40, font=("Segoe UI", 11))

# สร้าง Treeview
tree = ttk.Treeview(root, style="Custom.Treeview", columns=("ID", "First Name", "Last Name"), show="headings", height=8)

# กำหนดหัวคอลัมน์
tree.heading("ID", text="รหัส")
tree.heading("First Name", text="ชื่อ")
tree.heading("Last Name", text="นามสกุล")

# จัดตำแหน่งและความกว้างคอลัมน์
tree.column("ID", width=80, anchor="center")
tree.column("First Name", width=200, anchor="w")
tree.column("Last Name", width=200, anchor="w")

# เพิ่มข้อมูลตัวอย่าง
data = [
    (1, "สมชาย", "ใจดี"),
    (2, "สมหญิง", "รักงาน"),
    (3, "วิชัย", "เก่งมาก"),
    (4, "มานี", "ขยัน"),
    (5, "โชคชัย", "มั่นคง"),
    (6, "ประวิตร", "สุขสบาย"),
    (7, "อนุชา", "เจริญรุ่ง"),
]

for row in data:
    tree.insert("", "end", values=row)

# เพิ่ม Scrollbar
scrollbar = ttk.Scrollbar(root, orient="vertical", command=tree.yview)
tree.configure(yscrollcommand=scrollbar.set)

# Layout
tree.pack(side="left", fill="both", expand=True, padx=10, pady=10)
scrollbar.pack(side="right", fill="y", pady=10)

root.mainloop()

ผลลัพธ์

Treeview จะแสดงแถวข้อมูลที่มีความสูง 40 พิกเซลต่อแถว (สูงกว่าปกติประมาณ 2 เท่า) ทำให้อ่านง่ายขึ้น และเหมาะสำหรับหน้าจอความละเอียดสูง หรือการแสดงผลที่ต้องการพื้นที่มากขึ้น

คำแนะนำเพิ่มเติม

  • rowheight รับค่าเป็นพิกเซล (Integer) ค่าเริ่มต้นขึ้นอยู่กับธีมและฟอนต์
  • หากใช้ฟอนต์ขนาดใหญ่ ควรเพิ่ม rowheight ให้สอดคล้องกัน มิฉะนั้นข้อความอาจถูกตัด
  • สามารถตั้งค่าแยกสำหรับ Heading ได้ด้วย style.configure("Treeview.Heading", font=..., padding=...)
  • ธีม 'clam', 'alt', 'default' รองรับ rowheight ได้ดีที่สุด