与tkinter结合使用的全局变量和局部变量

时间:2018-10-08 19:59:51

标签: python tkinter global local

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

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

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 :(得分:0)

  

但是,“动作”是函数的本地对象。

那是不正确的。在您向函数内的action分配某些内容之前,它会引用全局变量action

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