Для того чтобы передать переменную вместе с нажатием кнопки в декоратор callback без использования глобальных переменных, можно воспользоваться **замыканием (closure)**. Замыкание — это функция, которая запоминает значения в своем окружении.
Пример реализации с использованием замыкания:
import tkinter as tk def create_callback(variable): def callback(): print(f"Button clicked with variable: {variable}") # Действия, которые нужно выполнить при нажатии кнопки return callback def main(): root = tk.Tk() my_variable = "Hello, World!" my_callback = create_callback(my_variable) button = tk.Button(root, text="Click me", command=my_callback) button.pack() root.mainloop() if __name__ == "__main__": main()
В данном примере create_callback
создает функцию обратного вызова (callback
), которая имеет доступ к переменной variable
, переданной ей при создании. При нажатии кнопки будет вызвана функция callback
, которая выведет значение переменной variable
.
Таким образом, вы можете отправить переменную вместе с нажатием кнопки, используя замыкание, без необходимости создавать глобальные переменные.