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

Tk() ใน Tkinter ทำหน้าที่อะไร

Tk() เป็น Constructor ของ Root Window (หน้าต่างหลัก) ใน Tkinter ทุกแอปพลิเคชัน Tkinter ต้องมี Root Window เพียงหนึ่งเดียว สร้างโดย Tk() จัดการ Event Loop และเป็น Parent ของ Widgets ทั้งหมด

หน้าที่ของ Tk()

  • สร้างหน้าต่างหลัก (Main Window / Root Window)
  • เริ่มต้น Tcl/Tk Interpreter
  • จัดการ Main Event Loop (mainloop())
  • เป็น Parent container ของ Widgets ทั้งหมด
  • จัดการ Window Manager (Title, Icon, Geometry, Protocol)

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


from tkinter import *

win = Tk()
win.geometry("750x250")
win.title("My Application")

Label(win, text="Open Source Learning is Awesome!",
      font=('Courier 20 underline')).pack()

win.mainloop()

เมธอดสำคัญของ Tk Instance

เมธอดคำอธิบาย
mainloop()เริ่ม Event Loop (บล็อคจนกว่าจะปิด)
destroy()ทำลายหน้าต่างและจบโปรแกรม
quit()หยุด mainloop (ไม่ทำลาย widgets)
title(str)ตั้งค่าหัวข้อหน้าต่าง
geometry("WxH+X+Y")ขนาดและตำแหน่งหน้าต่าง
iconbitmap("file.ico")ตั้งไอคอนหน้าต่าง
resizable(w, h)อนุญาต/ห้าม ปรับขนาด
attributes('-fullscreen', True)โหมดเต็มจอ
protocol("WM_DELETE_WINDOW", func)จัดการปุ่มปิดหน้าต่าง

หลักการสำคัญ: มี Tk() เพียงหนึ่งเดียว


# ✅ ถูก - Tk() หนึ่งตัว
root = Tk()
# สร้าง child window ด้วย Toplevel()
child = Toplevel(root)

# ❌ ผิด - Tk() หลายตัว (จะทำให้โปรแกรมแฮง/ผิดพลาด)
root1 = Tk()
root2 = Tk()  # ERROR!

การเข้าถึง Root จาก Widget ใดๆ


# จาก widget ใดๆ เข้าถึง root ได้ด้วย
root = widget.winfo_toplevel()
# หรือ
root = widget.master.master... (ขึ้นไปจนถึง root)

การประยุกต์ใช้

Tk() เป็นหัวใจของแอป Tkinter ทุกอย่างเริ่มจากที่นี่ การเข้าใจบทบาทช่วยให้ออกโครงสร้างโปรแกรมได้ถูกต้อง โดยเฉพาะเรื่อง Event Loop และ Parent-Child hierarchy