Tkinter Spinbox ใช้สำหรับป้อนค่าตัวเลขด้วยปุ่มเพิ่ม/ลด สามารถตั้งค่าเริ่มต้นได้โดยใช้ StringVar ผูกกับ textvariable แล้วตั้งค่าด้วย .set()
ขั้นตอนการทำงาน
- นำเข้า
tkinterและttk - สร้าง
StringVarและตั้งค่าเริ่มต้นด้วย.set("1.0") - สร้าง Spinbox ด้วย
ttk.Spinbox()พร้อมพารามิเตอร์:from_=0.5- ค่าต่ำสุดto=10.0- ค่าสูงสุดincrement=0.01- ขนาดขั้นตอนtextvariable=my_var- ผูกตัวแปร
- จัด Layout และรัน
mainloop()
ตัวอย่างโค้ด
from tkinter import *
from tkinter import ttk
win = Tk()
win.geometry("750x250")
# ตั้งค่าเริ่มต้น
my_var = StringVar(win)
my_var.set("1.0")
# สร้าง Spinbox
spinbox = ttk.Spinbox(win, from_=0.5, to=10.0, increment=0.01, textvariable=my_var)
spinbox.pack(ipadx=20, pady=20)
win.mainloop()
พารามิเตอร์สำคัญของ Spinbox
| พารามิเตอร์ | คำอธิบาย |
|---|---|
from_ | ค่าต่ำสุด (underscore เพราะ from เป็น keyword) |
to | ค่าสูงสุด |
increment | ขนาดขั้นตอนการเพิ่ม/ลด |
values | Tuple/List ค่าที่อนุญาต (ใช้แทน from_/to/increment) |
wrap | True =วนกลับเมื่อถึงขอบเขต |
format | รูปแบบการแสดง (เช่น "%.2f") |
command | Callback เมื่อค่าเปลี่ยน |
state | 'normal', 'readonly', 'disabled' |
ตัวอย่าง: ใช้ values แทน range
# เลือกได้เฉพาะค่าที่กำหนด
values = (0.5, 1.0, 1.5, 2.0, 2.5, 3.0)
spinbox = ttk.Spinbox(win, values=values, textvariable=my_var)
spinbox.pack()
การอ่านค่าปัจจุบัน
def get_value():
print("Current value:", my_var.get())
# หรือ
print("Current value:", spinbox.get())
ttk.Button(win, text="Get Value", command=get_value).pack()
การประยุกต์ใช้
เหมาะสำหรับ: การตั้งค่าพารามิเตอร์ตัวเลข (ปริมาณ, ราคา, อัตรา, ขนาด) การเลือกเวลา (ชั่วโมง/นาที) การปรับระดับ (Volume, Brightness) ฟอร์มกรอกข้อมูลที่ต้องการจำกัดช่วงค่า