Skip to main content
0

สร้าง GUI สุดโมเดิร์นด้วย customtkinter

หลายคนที่ใช้ Python ในการเขียนโปรแกรมอยู่แล้วไม่ว่าจะเป็นสาย Data, AI หรือการเขียนโปรแกรมแบบปกติ แล้วต้องการมีหน้าต่างหน้าตาการใช้งานในรูปแบบของ Desktop Application

แต่ตอนที่เราเรียนเนี่ย ส่วนใหญ่ก็จะสอนสร้างด้วยไลบรารีชื่อว่า tkinter กัน ซึ่งมันก็ใช้ได้ แต่ปัญหาคือหน้าตามันดูโบราณไปหน่อย วันนี้แอดขอแนะนำไลบรารีที่ทำให้ GUI เราไปได้สุดไปได้สวยขึ้นนั่นก็คือ customtkinter

โดย GUI หน้าตาแบบในภาพนี้เป็นการสร้างขึ้นมาจาก Python และ customtkinter เลย ด้านในเขียนคล้าย ๆ tkinter แต่เปลี่ยนวิธีการเรียกมาใช้ customtkinter แทน โดยตัวนี้จะมีของที่ต้องใช้ให้ครบไม่ว่าจะเป็น ปุ่ม, กล่องข้อความ, Tab, Switch ฯลฯ ให้ดู โมเดิร์น เรียบหรู และมี Dark Mode ด้วยนะ

ขั้นตอนการใช้งาน ให้เราเริ่มจากติดตั้งไลบรารีก่อน

pip install customtkinter
Python

หลังจากนั้นเราทำการสร้างไฟล์ และเขียนโค้ดตามตัวอย่างได้เลย เริ่มจากการ import customtkinter เข้ามาใช้งานก่อน กำหนดหน้าต่างหลักที่จะให้มันแสดงขึ้นมา กำหนดชื่อ กำหนดขนาด แล้วใส่ของหรือที่เรียกว่า widget ลงไป

เพียงเท่านี้เราก็จะได้หน้า GUI ที่สวยทันสมัยขึ้นแล้ว โดย Widget ที่ใช้บ่อย ๆ จะมีดังนี้

CTkLabel: ป้ายข้อความ

CTkEntry: กล่องกรอกข้อมูล

CTkButton: ปุ่มกดแบบ Flat UI

CTkFrame: กล่องรวม Widget อื่น ๆ

สามารภเลือกดูวิธีการใช้ Widget ต่าง ๆ ที่เราต้องการได้ที่ https://customtkinter.tomschimansky.com/documentation/widgets

ต่อมาเรามาลองเอา customtkinter มาทำแอปแบบง่าย ๆ อย่าง To Do List กัน

โดยจากโค้ดนี้เราจะสามารถเลือกได้ว่าจะใช้ Light Mode หรือ Dark Mode เลือกธีมของ UI ที่จะใช้ กำหนดของหน้าต่างหลักตามด้านบน สร้างฟังก์ชันที่เกี่ยวข้อง และกำหนดการแสดงผลในหน้า UI ได้ โดยตัวอย่างแอดใช้เป็นแบบ pack แต่เราสามารถใช้พวก grid และ place ได้ด้วย

import customtkinter as ctk

# ตั้งค่า UI
ctk.set_appearance_mode("dark")  # ใช้โหมดมืด
ctk.set_default_color_theme("blue") # ใช้ธีมสีฟ้า

# สร้างหน้าต่างหลัก
app = ctk.CTk()
app.title("Daily Task App")
app.geometry("400x500")

# กล่องเก็บ Task
tasks = []

# ฟังก์ชันเพิ่ม Task
def add_task():
    task = entry.get()
    if task:
        tasks.append(task)
        update_listbox()
        entry.delete(0, 'end')

# ฟังก์ชันอัปเดต List
def update_listbox():
    task_listbox.configure(state='normal')
    task_listbox.delete("1.0", "end")
    for i, task in enumerate(tasks, start=1):
        task_listbox.insert("end", f"{i}. {task}\n")
    task_listbox.configure(state='disabled')

# สร้าง Input
entry = ctk.CTkEntry(app, placeholder_text="พิมพ์ Task ที่นี่...")
entry.pack(pady=10, padx=20, fill='x')

# สร้างปุ่มเพิ่ม
add_button = ctk.CTkButton(app, text="เพิ่ม Task", command=add_task)
add_button.pack(pady=5)

# สร้างกล่องแสดง Task
task_listbox = ctk.CTkTextbox(app, height=350, state='disabled')
task_listbox.pack(pady=10, padx=20, fill='both', expand=True)

# เริ่มโปรแกรม
app.mainloop()
Python

0

แนะนำสำหรับคุณ

คัดลอกลิงก์สำเร็จ
Close Menu

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า