สวัสดีครับทุกคน ในบทความนี้เราจะมาเขียน GUI ด้วย Python กันครับ แต่ก่อนจะเริ่มเขียนเนี่ยเรามาดูกันก่อนครับว่าจะเขียน GUI ใน Python เนี่ยมันสามารถทำได้ด้วยวิธีไหนบ้าง
เนื่องมาจากความเป็นที่นิยมของภาษา Python เราเลยมีเครื่องมือเยอะมากที่จะมาช่วยเขียน GUI ให้เรา
PyQT เป็น library ที่ใช้เขียน GUI โดยใช้พื้นฐานจาก QT
ภาพ PyQT จาก wikipedia
Kivy อีกหนึ่ง library ยอดนิยมที่ใช้งานกันใน Python ความพิเศษของมันคือสามารถนำไปเขียนแอพมือถือได้ด้วย
ภาพ Kivy จากเว็บไซต์ official ของ kivy
Tkinter เป็น library ที่มีความเป็นที่นิยมมากๆอีกตัวหนึ่งในภาษา Python
ภาพจาก pythonprogramming.net
จะเห็นได้ครับว่าเรามี library ให้เลือกใช้มากมายในการทำ GUI ซึ่งแต่ละ library ก็มีข้อดีและข้อด้อยของตัวมัน มีความสามารถเด่นๆต่างๆที่เป็นจุดขายของมันโดยเราก็สามารถเลือกใช้ได้ตามสะดวกเลยครับ
แต่ในวันนี้ library ที่ผมอยากจะมานำเสนอก็ตามที่จั่วหัวไปที่ชื่อบทความครับ คือ library ที่ชื่อว่า EasyGUI ซึ่งจุดขายของมันก็ตามชื่อเลยครับ EasyGUI ก็คือมันสามารถใช้งานได้ง่ายมาก (ๆๆๆ)
โดยตัว EasyGUI นี้มีพื้นฐานการสร้างมาจาก Tkinter ความต่างของ EasyGUI เทียบกับ UI library ตัวอื่นๆคือมันไม่ได้ใช้งานแบบ event-driven (คือมี event ต่างๆแล้วสั่งการให้มันทำงาน) แต่ทำงานโดยการเรียกใช้ฟังค์ชันต่างๆ ซึ่งทำให้มันใช้งานได้ง่ายมากๆ
แต่แน่นอนครับว่ามันอาจจะไม่ได้มี structure ที่ดีมากนัก เพราะฉะนั้นเราเลยไม่ควรจะเอามันไปใช้ในงานใหญ่ๆซักเท่าไร แต่ถ้าหากอยากทำ GUI อะไรง่ายๆ เร็วๆขึ้นมา ก็ต้องขอแนะนำ EasyGUI เลยครับ
เอาล่ะ เกริ่นกันมานาน เรามาเริ่มติดตั้งและใช้งาน EasyGUI เลยดีกว่าครับ ตัว library ของ EasyGUI นั้นสามารถติดตั้งได้โดยใช้คำสั่งต่อไปนี้
pip install easygui
เมื่อติดตั้งเสร็จสิ้นสามารถลองใช้งานดูได้ครับ ลองสร้างไฟล์ python ขึ้นมา แล้วเขียนโค้ดตามนี้ลงไปครับ
import easygui
easygui.msgbox('Hello! EasyGUI!', 'Hello')
ผลลัพท์ที่ได้
ผลลัพท์ที่ได้
เราได้หน้าต่าง message ขึ้นมาหน้าต่างนึงแล้วครับ! ด้วยการเขียนโค้ดแค่เพียงบรรทัดเดียวเท่านั้นครับ โดยการทำงานของมันก็ไม่ซับซ้อนมากครับ
# ข้อความที่ใส่ ชื่อหน้าต่าง
easygui.msgbox('Hello! EasyGUI!', 'Hello') # คำสั่งเรียก Message Box
msgbox เป็น function หนึ่งใน easygui ที่ใช้เรียก message box ด้วยคำสั่ง easygui.msgbox() ออกมาแสดงข้อความให้เราเห็นครับ ซึ่งฟังค์ชันอื่นๆใน EasyGUI ก็จะมีวิธีการเรียกใช้ที่คล้ายๆกัน
หรือเรียกอีกชื่อก็ชื่อ yes or no Box ครับ ตัวนี้เราจะใช้ได้เมื่อเราต้องการสร้างหน้า UI ที่มีปุ่ม Yes หรือ No ให้ user กด โดยการใช้งานสามารถทำได้ดันี้ครับ
result = easygui.ynbox('Shall I continue?', 'Title', ('Yes', 'No'))
ผลลัพท์ที่ได้
ผลลัพท์จาก ynbox
เราสามารถที่จะนำตัวแปรไปรับค่าที่ ynbox คืนค่าออกมาได้ด้วยครับ ถ้ากด Yes จะได้ผลออกมาเป็น True หรือ No ผลลัพท์ก็จะได้เป็น False
ถ้าเราต้องการที่จะให้มีปุ่มกดหลายๆปุ่ม เราก็สามารถใช้งาน buttonbox ได้ครับ
result = easygui.buttonbox('Choose your choice', 'Exam', ('A', 'B', 'C'))
print(result)
ผลลัพท์ที่ได้
ผลลัพท์จาก ButtonBox
โดยเราก็สามารถที่จะนำค่าที่ return ของ button box ออกมาใช้งานต่อได้เหมือนกันครับ
หรือถ้าเราต้องการข้อมูลอะไรจาก User ให้ User พิมพ์เราก็สามารถที่จะใช้งาน Enter Box easygui.enterbox() ได้
result = easygui.enterbox('Type something...', 'Enter Box')
print(result)
ผลลัพท์ที่ได้
ผลลัพท์จาก Enter Box
โดยค่าที่ return ออกมาก็จะเป็นสิ่งที่ User ป้อนลงไปครับ
ถ้าเราต้องการที่จะให้ user เลือกไฟล์ต่างๆในคอมพิวเตอร์ เราก็สามารถที่จะใช้งานโดยใช้คำสั่ง easygui.fileopenbox() ได้
result = easygui.fileopenbox()
print(result)
โดยเมื่อเราเรียกใช้งานตัว EasyGUI ก็จะไปเรียกใช้ File Manager ขึ้นมาให้เราเลือกไฟล์ที่ user ต้องการ โดยค่าที่ return ออกมาจาก function ก็จะเป็น directory ก็จะเป็นที่อยู่ของไฟล์นั้นๆ
เดี๋ยวลองเอา EasyGUI มาทำโปรแกรมเครื่องคิดเลขง่ายๆดูครับ (เรามองข้ามเรื่อง UX/UI ไปก่อนนะครับ 😂)
โดยผมอยากให้เครื่องคิดเลขของเราทำงานตามนี้
import easygui
title = 'Dumb Calculator'
op = easygui.buttonbox('Choose your choice', title, ('+', '-', '*', '/'))
a = easygui.enterbox('Type A', title)
b = easygui.enterbox('Type B', title)
a = float(a)
b = float(b)
if op == '+':
easygui.msgbox(f'{a} + {b} = {a + b}', title)
elif op == '-':
easygui.msgbox(f'{a} - {b} = {a - b}', title)
elif op == '*':
easygui.msgbox(f'{a} * {b} = {a * b}', title)
elif op == '/':
easygui.msgbox(f'{a} / {b} = {a / b}', title)
ผลลัพธ์ที่ได้
เริ่มต้นด้วยการเลือก Mode
ป้อนเลข A, B
ผลลัพท์จากการคำนวณ
จะเห็นว่าการเขียน GUI ด้วย EasyGUI เป็นอะไรที่ง่ายมากครับ ถ้าใครอยากลองทำโปรแกรมง่ายๆเร็วๆก็สามารถนำไปใช้ได้ตามสะดวกเลยครับ
EasyGUI ยังมี feature อื่นๆอีกเยอะมาก ถ้าใครสนใจอยากลองเล่นมากกว่านี้สามารถกดไปอ่านที่ Official Documentation ของ EasyGUI ที่ reference ด้านล่างกันได้เลยครับ
Reference
[ easygui.sourceforge.net ] - easyGUI Documentation
กิจกรรมที่กำลังจะมาถึง
ไม่พลาดกิจกรรมเด็ด ๆ ที่น่าสนใจ
Event นี้จะเริ่มขึ้นใน April 25, 2023
รายละเอียดเพิ่มเติม/สมัครเข้าร่วมคอร์สเรียนไพธอนออนไลน์ที่เราได้รวบรวมและได้ย่อยจากประสบการณ์จริงและเพื่อย่นระยะเวลาในการเรียนรู้ ลองผิด ลองถูกด้วยตัวเองมาให้แล้ว เพราะเวลามีค่าเป็นอย่างยิ่ง พร้อมด้วยการซัพพอร์ตอย่างดี