Advanced "Hello World" App

ลองมาทำ GUI ที่ยากขึ้นไปอีกนิด สมมุติว่าเราอยากทำแอ๊พที่มีสองปุ่ม คือปุ่ม quit และปุ่ม hello

เมื่อกดปุ่ม quit โปรแกรมจะปิดหน้าจอ เมื่อกดปุ่ม hello โปรแกรมจะขึ้นข้อความทักทายบน python console

ลองรันโค้ดนี้ใน Pycharm แล้วลองเล่นกับ GUI ที่ออกมา

from tkinter import *


def say_hi():
    print("hi there, everyone!")

root = Tk()

frame = Frame(root)
frame.pack()

q = Button(frame, text="QUIT", fg="red", command=frame.quit)
q.pack(side=LEFT)

hi = Button(frame, text="Hello", command=say_hi)
hi.pack(side=LEFT)

root.mainloop()

คำอธิบายโค้ด

frame = Frame(root)
frame.pack()

โค้ดนี้สร้าง widget หนึ่งตัวที่เป็นประเภท Frame ในที่นี้ Frame คือกรอบสี่เหลี่ยมว่างๆ ที่เราสามารถนำ widgets อื่นๆเข้าไปแปะไว้ได้ จากนั้นคำสั่ง frame.pack() สั่งให้ frame นำตัวไปวางบน root

q = Button(frame, text="QUIT", fg="red", command=frame.quit)
q.pack(side=LEFT)

เราสร้างตัวแปรชื่อ q ที่เก็บ widget อีกตัวเป็นประเภท Button (ปุ่ม)

argument แรก บอกว่าปุ่มนี้จะไปแปะอยู่บน widget ไหน

argument ถัดๆมามี text (ข้อความบนปุ่ม), fg (foreground color หรือ สีของปุ่ม), command คือ function ที่จะถูกเรียกเมื่อเรากดปุ่ม

สำหรับปุ่ม q เราเรียกฟังก์ชัน quit คือให้ปิดหน้าต่างเมื่อกดปุ่ม

จากนั้นเราเรียกคำสั่ง q.pack(side=LEFT) เพื่อจัดให้ปุ่ม q ชิดไปทางซ้าย

hi = Button(frame, text="Hello", command=say_hi)
hi.pack(side=LEFT)

ในโค้ดนี้เราสร้างปุ่มขึ้นมาอีกอันหนึ่งที่เก็บในตัวแปรชื่อ hi ซึ่งแปะอยู่บน frame widget เช่นกัน เมื่อกดปุ่มนี้ จะไปเรียกฟังก์ชัน say_hi ซึ่งปริ๊นท์ประโยค "hi there, everyone!" ออกมาทาง python console

เรารู้จัก widgets หลายตัวแล้ว ทั้ง Tk, Frame, button มาดูกันต่อว่ามี widgets อะไรอีกบ้างใน Tkinter