Tkinter Slider

2024. 3. 4. 17:53GUI/tkinter

요약 : 이 튜토리얼에서는 Tkinter Scale 위젯을 사용하여 슬라이더를 만드는 방법을 배웁니다.

Tkinter 슬라이더 위젯 소개

슬라이더를 사용하면 표시기를 움직여 값을 입력할 수 있습니다. 슬라이더는 수직 또는 수평일 수 있습니다.

 

 

슬라이더를 만들려면 다음과 같이 ttk.Scale() 생성자를 사용합니다 .

ttk.Scale(container,from_,to)

이 구문에서는 container는 슬라이더의 상위 구성 요소를 지정합니다.

from_ 및 to 옵션은 슬라이더의 최소값과 최대값을 지정합니다. from은 Python의 키워드이므로 Tkinter는 대신 from_을 사용합니다.

기본적으로 슬라이더는 수평입니다. 슬라이더 배열 방법을 지정하려면 수평 또는 수직이 되는 orient 옵션을 사용합니다. 예를 들어:

slider = ttk.Scale(
     root,
     from_=0,
     to=100,
     orient='vertical', # horizontal
)

현재 가치 얻기

슬라이더의 현재 값을 얻으려면 다음과 같이 슬라이더의 variable에 DoubleVar를 할당할 수 있습니다.

current_value = tk.DoubleVar()
slider = ttk.Scale(
     root,
     from_=0,
     to=100,
     orient='horizontal',
     variable=current_value
)

슬라이더의 현재 값을 얻는 또 다른 방법은 슬라이더 객체의 get() 메서드를 호출하는 것입니다.

slider.get()

콜백 실행

슬라이더 값이 변경될 때마다 기능을 실행하려면 다음과, 같이 command 옵션에 할당하면 됩니다.

def slider_changed(event):
     print(slider.get())

slider = ttk.Scale(
     root,
     from_=0,
     to=100,
     orient='horizontal',
     variable=current_value,
     command=slider_changed
)

슬라이더 값이 변경될 때 함수를 호출하면 성능 문제가 발생할 수 있습니다.

슬라이더 비활성화

슬라이더를 비활성화하려면 상태를 'disabled'로 설정합니다. 다시 활성화하려면 상태를 'normal'로 설정하세요.

slider['state'] = 'disabled'
slider['state'] = 'normal'

Tkinter 슬라이더 예

다음 프로그램은 Tkinter 슬라이더 위젯을 사용하는 방법을 보여줍니다. 슬라이더 값을 변경하면 레이블이 슬라이더의 현재 값을 업데이트합니다.

In [3]:
import tkinter as tk
from tkinter import ttk


# root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Slider Demo')


root.columnconfigure(0, weight=1)
root.columnconfigure(1, weight=3)


# slider current value
current_value = tk.DoubleVar()


def get_current_value():
    return '{: .2f}'.format(current_value.get())


def slider_changed(event):
    value_label.configure(text=get_current_value())


# label for the slider
slider_label = ttk.Label(
    root,
    text='Slider:'
)

slider_label.grid(
    column=0,
    row=0,
    sticky='w'
)

#  slider
slider = ttk.Scale(
    root,
    from_=0,
    to=100,
    orient='horizontal',  # vertical
    command=slider_changed,
    variable=current_value
)

slider.grid(
    column=1,
    row=0,
    sticky='we'
)

# current value label
current_value_label = ttk.Label(
    root,
    text='Current Value:'
)

current_value_label.grid(
    row=1,
    columnspan=2,
    sticky='n',
    ipadx=10,
    ipady=10
)

# value label
value_label = ttk.Label(
    root,
    text=get_current_value()
)
value_label.grid(
    row=2,
    columnspan=2,
    sticky='n'
)


root.mainloop()
 
 

 

요약

  • 슬라이더 위젯을 생성하려면 ttk.Scale()를 사용하세요 .
  • scale.get() 또는 variable 옵션을 사용하여 슬라이더의 현재 값을 가져옵니다.
  • 슬라이더 값이 변경될 때, 실행될 기능을 할당하려면 command 옵션을 사용하십시오 .

 

'GUI > tkinter' 카테고리의 다른 글

Tkinter Sizegrip  (0) 2024.03.06
Tkinter Spinbox  (0) 2024.03.05
Tkinter Listbox  (0) 2024.03.03
Tkinter Combobox  (0) 2024.03.02
Tkinter Radio Button  (0) 2024.03.01