CheckBox (Multiple Choice)

จาก code ตัวอย่างจะสังเกตุเห็นว่าการเขียนโปรแกรมจะคลายๆกับตอนที่แล้ว แต่ในครั้งนี้เราต้องกำหนดตัวแปรทั้ง 5 ค่า เพื่อเก็บค่าที่ผู้ใช้เลือกทั้งหมดนำมาประมวลผล 

Function showChoice

def showChoice():
    print(lang1.get(), lang2.get(), lang3.get(), lang4.get(), lang5.get())

และเมื่อผู้ใช้กดปุ่มจะให้แสดง ตัวเลือกที่ผู้ใช้เลือกผ่านทางหน้าจอ terminal

Button(text="แสดงตัวเลือก",command=showChoice).pack(anchor=W)

และในครั้งนี้ผมต้องการให้ปุ่ม Check Button ชิดซ้ายทั้งหมดโดยผมจะกำหนด properties ให้กับ .pack ให้จุด anchor point อยู่ในทิศ W

from tkinter import *

root = Tk()
root.title("My GUI")
root.geometry("500x500")

def showChoice():
    print(lang1.get(), lang2.get(), lang3.get(), lang4.get(), lang5.get())
# ค่าที่ได้จะเป็น Integer 0 = ไม่ได้เลือก, 1 = เลือก
lang1 = IntVar()
Checkbutton(text="Python", variable=lang1).pack(anchor=W)
lang2 = IntVar()
Checkbutton(text="C++", variable=lang2).pack(anchor=W)
lang3 = IntVar()
Checkbutton(text="HTML", variable=lang3).pack(anchor=W)
lang4 = IntVar()
Checkbutton(text="PHP", variable=lang4).pack(anchor=W)
lang5 = IntVar()
Checkbutton(text="SWIFT", variable=lang5).pack(anchor=W)

Button(text="แสดงตัวเลือก",command=showChoice).pack(anchor=W)
root.mainloop()

run code ดูผลงาน

ในขั้นตอนต่อไปนี้จะเป็นการสร้างฟังชั่นใหม่โดยจะให้แสดงผลใน label โดยจะให้โปรแกรมเก็บค่าที่ผู้ใช้เลือกไว้ในตัวแปร Choice เมื่อผู้ใช้กดปุ่ม "แสดงตัวเลือก" ให้โปรแกรมเชคว่าผู้ใช้ได้เลือกข้อมูลอะไรมาบ้าง แล้วนำมาแสดงผลใน label 

def showChoice():
    choice1 = lang1.get()
    choice2 = lang2.get()
    choice3 = lang3.get()
    choice4 = lang4.get()
    choice5 = lang5.get()

    if choice1 == 1: # มีการเลือก
        Label(text="เลือกภาษา Python").pack(anchor=W)
    if choice2 == 1: # มีการเลือก
        Label(text="เลือกภาษา C++").pack(anchor=W)
    if choice3 == 1: # มีการเลือก
        Label(text="เลือกภาษา HTML").pack(anchor=W)
    if choice4 == 1: # มีการเลือก
        Label(text="เลือกภาษา PHP").pack(anchor=W)
    if choice5 == 1: # มีการเลือก
        Label(text="เลือกภาษา SWIFT").pack(anchor=W)

และเมื่อนำไปรวมกับกับ code เดิมจะมีหน้าตาแบบนี้

from tkinter import *

root = Tk()
root.title("My GUI")
root.geometry("500x500")

def showChoice():
    choice1 = lang1.get()
    choice2 = lang2.get()
    choice3 = lang3.get()
    choice4 = lang4.get()
    choice5 = lang5.get()

    if choice1 == 1: # มีการเลือก
        Label(text="เลือกภาษา Python").pack(anchor=W)
    if choice2 == 1: # มีการเลือก
        Label(text="เลือกภาษา C++").pack(anchor=W)
    if choice3 == 1: # มีการเลือก
        Label(text="เลือกภาษา HTML").pack(anchor=W)
    if choice4 == 1: # มีการเลือก
        Label(text="เลือกภาษา PHP").pack(anchor=W)
    if choice5 == 1: # มีการเลือก
        Label(text="เลือกภาษา SWIFT").pack(anchor=W)

# ค่าที่ได้จะเป็น Integer 0 = ไม่ได้เลือก, 1 = เลือก
lang1 = IntVar()
Checkbutton(text="Python", variable=lang1).pack(anchor=W)
lang2 = IntVar()
Checkbutton(text="C++", variable=lang2).pack(anchor=W)
lang3 = IntVar()
Checkbutton(text="HTML", variable=lang3).pack(anchor=W)
lang4 = IntVar()
Checkbutton(text="PHP", variable=lang4).pack(anchor=W)
lang5 = IntVar()
Checkbutton(text="SWIFT", variable=lang5).pack(anchor=W)

Button(text="แสดงตัวเลือก",command=showChoice).pack(anchor=W)
root.mainloop()

ลอง run code ดูครับ