【发布时间】:2018-10-08 19:59:51
【问题描述】:
为什么会这样?当我点击按钮时,它会切换到“我已被点击”。但是,“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()
【问题讨论】:
-
是
click_me中的类型(alable而你在函数之外有alabel)? -
"
action是函数的本地对象" 是什么让你这么认为?action在全局范围内明确定义。 -
函数可以读取或变异绑定到全局名称的对象。但它不能在没有
global指令的情况下分配给全局名称,因为这会将新对象绑定到名称,而没有指令,新对象将绑定到本地名称。但是这里没有新对象。 -
顺便说一句,你在
click_me中有几个错别字:你有“alable”而不是“alabel”
标签: python tkinter global local