函数中的全局和局部变量与 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
指向的对象。
为什么这可能?当我单击按钮时,它会切换到 "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
指向的对象。