2024. 3. 5. 16:22ㆍGUI/tkinter
요약 : 이 튜토리얼에서는 Tkinter Spinbox 위젯을 만드는 방법을 배웁니다.
Tkinter Spinbox 위젯 소개
Spinbox 위젯을 사용하면 숫자 범위를 포함할 수 있는 값 집합에서 값을 선택할 수 있습니다.
Spinbox에는 현재 값과 한 쌍의 화살촉을 표시하는 영역이 있습니다.
위쪽을 가리키는 화살표를 클릭하면 Spinbox가 시퀀스에서 다음으로 높은 값으로 이동합니다.
현재 값이 최대값에 도달하면 최소값으로 설정할 수 있습니다.
반면에 아래쪽을 가리키는 화살표를 클릭하면 Spinbox는 현재 값을 시퀀스의 다음 낮은 값으로 줄입니다.
현재 값이 최저값에 도달하면 최대값으로 설정할 수 있습니다.
또한 Entry 위젯과 마찬가지로 Spinbox 위젯에 값을 직접 입력할 수도 있습니다 .
Spinbox 위젯을 생성하려면 ttk.Spinbox생성자를 사용합니다.
ttk.Spinbox(master, from_, to, textvariable, wrap)
이 구문에서는:
- master는 Spinbox 위젯의 상위 위젯 입니다.
- from_는 최소값입니다. from은 Python 키워드 이므로 컴파일 오류를 방지하려면, 접미사에 밑줄(_)을 붙여야 합니다.
- to 값은 최대값을 나타냅니다.
- textvariable는 Spinbox의 현재 값을 보유하는 Tkinter 클래스의 StringVar 또는 IntVar 객체를 지정 합니다.
- wrap는 부울 값입니다. wrap를 True로 설정하면, 현재 값이 최대값에 도달했을 때 위쪽 화살표를 클릭하면 가장 낮은 값으로 설정되고, 반대의 경우도 마찬가지입니다. wrap을 False로 설정하면 아래쪽 화살표를 클릭하면 위젯이 현재 값을 최대값으로 설정합니다.
ttk.Spinbox는 Python 3.7부터 사용할 수 있습니다. 낮은 버전을 사용하는 경우에는, tk.Spinbox을 사용해야 합니다.
현재 값 가져오기
Spinbox의 현재 값을 얻으려면 text변수에 액세스하면 됩니다. 예를 들어:
current_value = tk.StringVar(value=0)
spin_box = ttk.Spinbox(
container,
from_=0,
to=30,
textvariable=current_value,
wrap=True)
이 예에서는, current_value느 Spinbox 위젯의 현재 값을 보유합니다. get() 메소드를 호출하여 이를 얻을 수 있습니다.
current_value.get()
또한 Spinbox 개체의 get() 메서드를 사용할 수도 있습니다.
spin_box.get()
기능 실행
Spinbox의 값이 변경될 때 기능을 실행하려면 해당 기능을 command 옵션에 할당하면 됩니다. 예를 들어:
def value_changed():
print(c urrent_value.get())
current_value = tk.StringVar(value=0)
spin_box = ttk.Spinbox(
container,
from_=0,
to=30,
textvariable=current_value,
command=value_changed)
이 예에서는 Spinbox의 값이 변경될 때마다 value_changed 함수가 자동으로 실행됩니다.
개별 단계 설정
Spinbox에 대한 개별 단계 목록을 설정하려면 다음과 같이 values 옵션에 개별 숫자 튜플을 할당합니다.
t tk.Spinbox(
...
values=tuple
...
)
Tkinter Spinbox 위젯 예
Spinbox 위젯을 생성하는 몇 가지 예를 살펴보겠습니다.
1) 간단한 Tkinter Spinbox 위젯 예제
다음 프로그램은 Spinbox를 사용하는 방법을 보여줍니다.
import tkinter as tk
from tkinter import ttk
# root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Spinbox Demo')
# Spinbox
current_value = tk.StringVar(value=0)
spin_box = ttk.Spinbox(
root,
from_=0,
to=30,
textvariable=current_value,
wrap=True)
spin_box.pack()
root.mainloop()

2) 개별 단계를 갖춘 Tkinter Spinbox
다음 예에서는 개별 단계를 사용하여 Spinbox를 생성하는 방법을 보여줍니다.
import tkinter as tk
from tkinter import ttk
# root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Spinbox Demo')
# spinbox
current_value = tk.StringVar()
spin_box = ttk.Spinbox(
root,
from_=0,
to=50,
values=(0, 10, 20, 30, 40, 50),
textvariable=current_value,
wrap=True)
spin_box.pack()
root.mainloop()

요약
- ttk.Spinbox(container, **options)는 Spinbox를 생성하는 데 사용됩니다.
- 현재 값이 최대 값에 도달하면, 최소 값으로 설정되도록 wrap=True을 설정하고 wrap=False로 설정되면 반대로 설정됩니다.
'GUI > tkinter' 카테고리의 다른 글
Tkinter LabelFrame (0) | 2024.03.07 |
---|---|
Tkinter Sizegrip (0) | 2024.03.06 |
Tkinter Slider (0) | 2024.03.04 |
Tkinter Listbox (0) | 2024.03.03 |
Tkinter Combobox (0) | 2024.03.02 |