Tkinter Spinbox

2024. 3. 5. 16:22GUI/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를 사용하는 방법을 보여줍니다.

In [3]:
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를 생성하는 방법을 보여줍니다.

In [5]:
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