Виджет Tkinter Scale в Python с примерами

Рассмотрим, как создать шкалу с ползунком с помощью виджета Tkinter Scale в Python.

Содержание

Что такое виджет Tkinter Scale?

Ползунок позволяет вводить значение, перемещая индикатор. Он может быть вертикальным или горизонтальным:

Пример виджета Tkinter Scale

Чтобы создать шкалу с ползунком, используйте конструктор 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
)

Получение текущего значения

Чтобы получить текущее значение ползунка, можно присвоить 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. Метка обновит текущее значение слайдера, когда вы его измените.

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()

Выход:

Как использовать виджет слайдера Tkinter

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *