Помогите понять код tkinter
from tkinter import *
def onMove(value):
print('in onMove', value)
root = Tk()
var = IntVar()
Scale(root, label='Scale', command=onMove,
variable=var, from_=0, to=4, length=200, tickinterval=1,
orient='horizontal').pack()
root.mainloop()
Не понимаю, как передается аргумент value в функцию onMove(), если мы не передаем его явно из command=onMove и он не указан в глобальной области видимости. Откуда функция обработчик onMove() получает значение аргумента?
Ответы (2 шт):
Виджет Scale предоставляет объект графического ползунка,
который позволяет вам выбирать значения из определенной шкалы.
Синтаксис для создания этого виджета:
w = Scale ( master, option, ... )
command - Процедура, вызываемая каждый раз при перемещении ползунка. Этой процедуре будет передан один аргумент - новое значение шкалы. Если ползунок перемещается быстро, вы можете не получить обратный вызов для каждой возможной позиции, но вы обязательно получите обратный вызов, когда он установится.
variable - Управляющая переменная для этой шкалы, если есть. Управляющие переменные могут быть из класса IntVar, DoubleVar (float) или StringVar. В последнем случае числовое значение будет преобразовано в строку.
Насколько помню command=onMove передает значение в указанную функцию.
То есть где-то в недрах функции Scale выполняется код onMove(1), где число = текущее положение ползунка.