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