在 tkinter 上复制标签并在单击按钮时更改文本?

Copy a label on tkinter and change the text on button click?

我有一些这种类型的程序:

from tkinter import *

def apply_text(lbl_control):
    lbl_control['text'] = "This is some test!"

master = Tk()

lbl = Label(master)
btn = Button(master, text="apply", command=lambda: apply_text(lbl))


lbl.pack()
btn.pack()

mainloop()

我现在的目标是复制标签 lbl 本身的文本,而不能更改它。我尝试了以下方法来解决问题:

from tkinter import *

def apply_text(lbl_control):
    lbl_control.insert(0, "This is some test!")

master = Tk()

lbl = Entry(master, state="readonly")
btn = Button(master, text="apply", command=lambda: apply_text(lbl))


lbl.pack()
btn.pack()

mainloop()

因为 state = "readonly" 无法再更改 lbl 的文本插入。因此,如果我单击按钮 apply,则不会发生任何事情。我该如何更改它?

有一个简单的方法,就是先把入口的state改成normal,然后插入文字,再把state改回[=15] =].

from tkinter import *

def apply_text(lbl_control):
    lbl_control['state'] = 'normal'
    lbl_control.delete(0,'end')
    lbl_control.insert(0, "This is some test!")
    lbl_control['state'] = 'readonly'

master = Tk()

lbl = Entry(master, state="readonly")
btn = Button(master, text="apply", command=lambda: apply_text(lbl))


lbl.pack()
btn.pack()

mainloop()

还有另一种方法可以使用 textvariable
代码:(建议)

from tkinter import *

def apply_text(lbl_control):
    eText.set("This is some test.")

master = Tk()

eText = StringVar()
lbl = Entry(master, state="readonly",textvariable=eText)
btn = Button(master, text="apply", command=lambda: apply_text(lbl))


lbl.pack()
btn.pack()

mainloop()