Глобальные и локальные переменные в функции в сочетании с tkinter - PullRequest
0 голосов
/ 08 октября 2018

Почему это возможно?Когда я нажимаю на кнопку, она переключается на «меня нажали».Однако «действие» является локальным объектом функции.Как функция может вызвать глобальное изменение?

Я ожидал, что мне нужно установить глобальное действие в функции через "глобальное действие".

import tkinter as tk
from tkinter import ttk

#Creates tk object
win = tk.Tk()

win.title("TEST")

alabel = ttk.Label(win, text = "A Label")
alabel.grid(column=0, row=0)

#function
def click_me():
    action.configure(text="I have been clicked")
    alable.configure(foreground='red')
    alable.configure(text='a red label')

#adding a button
action = ttk.Button(win, text="Click me", command = click_me)
action.grid(column=1, row=0)


win.mainloop()

1 Ответ

0 голосов
/ 08 октября 2018

Однако «действие» является локальным объектом функции.

Это неверно.Пока вы не назначите что-либо для action внутри функции, это относится к глобальной переменной action.

Поскольку вы вызываете метод для action, а не устанавливаете action для нового значения, выизменяют объект, на который указывает action.

...