เขียน GUI แบบ easy ด้วย EasyGUI (Python)

ทดสอบสร้าง GUI ด้วย Python โดยนี่คืออีกหนึ่ง library ที่น่าสนใจครับ มีชื่อว่า easyGUI

เขียน GUI แบบ easy ด้วย EasyGUI (Python)

สวัสดีครับทุกคน ในบทความนี้เราจะมาเขียน 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

เอาล่ะ เกริ่นกันมานาน เรามาเริ่มติดตั้งและใช้งาน 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 ก็จะมีวิธีการเรียกใช้ที่คล้ายๆกัน

ความสามารถอื่นๆ

  1. ynbox

หรือเรียกอีกชื่อก็ชื่อ yes or no Box ครับ ตัวนี้เราจะใช้ได้เมื่อเราต้องการสร้างหน้า UI ที่มีปุ่ม Yes หรือ No ให้ user กด โดยการใช้งานสามารถทำได้ดันี้ครับ

result = easygui.ynbox('Shall I continue?', 'Title', ('Yes', 'No'))

ผลลัพท์ที่ได้

ผลลัพท์จาก ynbox

เราสามารถที่จะนำตัวแปรไปรับค่าที่ ynbox คืนค่าออกมาได้ด้วยครับ ถ้ากด Yes จะได้ผลออกมาเป็น True หรือ No ผลลัพท์ก็จะได้เป็น False

  1. buttonbox

ถ้าเราต้องการที่จะให้มีปุ่มกดหลายๆปุ่ม เราก็สามารถใช้งาน buttonbox ได้ครับ

result = easygui.buttonbox('Choose your choice', 'Exam', ('A', 'B', 'C'))
print(result)

ผลลัพท์ที่ได้

ผลลัพท์จาก ButtonBox

โดยเราก็สามารถที่จะนำค่าที่ return ของ button box ออกมาใช้งานต่อได้เหมือนกันครับ

  1. EnterBox

หรือถ้าเราต้องการข้อมูลอะไรจาก User ให้ User พิมพ์เราก็สามารถที่จะใช้งาน Enter Box easygui.enterbox() ได้

result = easygui.enterbox('Type something...', 'Enter Box')
print(result)

ผลลัพท์ที่ได้

ผลลัพท์จาก Enter Box

โดยค่าที่ return ออกมาก็จะเป็นสิ่งที่ User ป้อนลงไปครับ

  1. fileopenbox

ถ้าเราต้องการที่จะให้ user เลือกไฟล์ต่างๆในคอมพิวเตอร์ เราก็สามารถที่จะใช้งานโดยใช้คำสั่ง easygui.fileopenbox() ได้

result = easygui.fileopenbox()
print(result)

โดยเมื่อเราเรียกใช้งานตัว EasyGUI ก็จะไปเรียกใช้ File Manager ขึ้นมาให้เราเลือกไฟล์ที่ user ต้องการ โดยค่าที่ return ออกมาจาก function ก็จะเป็น directory ก็จะเป็นที่อยู่ของไฟล์นั้นๆ

ลองเอามาทำโปรแกรมง่ายๆดูดีกว่า

เดี๋ยวลองเอา EasyGUI มาทำโปรแกรมเครื่องคิดเลขง่ายๆดูครับ (เรามองข้ามเรื่อง UX/UI ไปก่อนนะครับ 😂)

โดยผมอยากให้เครื่องคิดเลขของเราทำงานตามนี้

  1. เริ่มต้นด้วย Button box เพื่อที่ให้เราเลือกโหมด + - x
  2. มี Enter box ที่ให้ป้อนเลข A
  3. มี Enter box ให้ป้อนเลข B
  4. จากนั้นจะคืนค่าออกมาเป็น A ที่กระทำกับ B ตามโหมดที่เราเลือกไว้ตั้งแต่ข้อแรก
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