函数中的全局和局部变量与 tkinter 结合

Global and local variables in function combined with tkinter

为什么这可能?当我单击按钮时,它会切换到 "I have been clicked"。但是,"action" 是函数的局部对象。函数如何引起全局变化?

我预计我需要通过 "global action" 在函数中设置全局操作。

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()

However, "action" is a local object of the function.

这是不正确的。直到你在函数内给 action 赋值,它指的是全局变量 action.

因为您是在 action 上调用方法而不是将 action 设置为新值,所以您正在修改 action 指向的对象。