Помогите понять код 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 шт):

Автор решения: S. Nick

Виджет Scale предоставляет объект графического ползунка, который позволяет вам выбирать значения из определенной шкалы.

Синтаксис для создания этого виджета:

w = Scale ( master, option, ... )
  • command - Процедура, вызываемая каждый раз при перемещении ползунка. Этой процедуре будет передан один аргумент - новое значение шкалы. Если ползунок перемещается быстро, вы можете не получить обратный вызов для каждой возможной позиции, но вы обязательно получите обратный вызов, когда он установится.

  • variable - Управляющая переменная для этой шкалы, если есть. Управляющие переменные могут быть из класса IntVar, DoubleVar (float) или StringVar. В последнем случае числовое значение будет преобразовано в строку.

→ Ссылка
Автор решения: Kers

Насколько помню command=onMove передает значение в указанную функцию. То есть где-то в недрах функции Scale выполняется код onMove(1), где число = текущее положение ползунка.

→ Ссылка