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

Python 函数中的全局和局部变量与tkinter组合,python,tkinter,global,local,Python,Tkinter,Global,Local,为什么这是可能的?当我点击按钮时,它会切换到“我已被点击”。但是,“动作”是函数的局部对象。该功能如何引起全局变化 我希望我需要通过“全局操作”在函数中设置全局操作 但是,“动作”是函数的局部对象 这是不正确的。在函数中为action赋值之前,它指的是全局变量action 因为您在action上调用一个方法,而不是将action设置为一个新值,所以您正在修改action指向的对象。是click\me中的类型(alable而您在函数之外有alabel吗)?“操作是函数的本地对象“你怎么会这样想操作

为什么这是可能的?当我点击按钮时,它会切换到“我已被点击”。但是,“动作”是函数的局部对象。该功能如何引起全局变化

我希望我需要通过“全局操作”在函数中设置全局操作

但是,“动作”是函数的局部对象

这是不正确的。在函数中为
action
赋值之前,它指的是全局变量
action


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

click\me
中的类型(
alable
而您在函数之外有
alabel
吗)?“
操作
是函数的本地对象“你怎么会这样想<代码>操作在全局范围中定义明确。函数可以读取或修改绑定到全局名称的对象。但是,如果没有
global
指令,它无法分配给全局名称,因为这会将新对象绑定到名称,而如果没有该指令,新对象将绑定到本地名称。但是这里没有新对象。顺便说一句,您在
单击我时有几个输入错误:您使用的是“alable”而不是“alabel”
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()