Виджет Tkinter Scale в Python с примерами
Рассмотрим, как создать шкалу с ползунком с помощью виджета Tkinter Scale в Python.
- Что такое виджет Tkinter Scale?
- Получение текущего значения
- Выполнение обратного вызова
- Отключение ползунка
- Пример слайдера Tkinter
Что такое виджет 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()
Выход: