我有一些這種型別的程式:
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。我怎樣才能改變它?
uj5u.com熱心網友回復:
有一個簡單的方法可以做到,簡單的先把stateentry的改為normal,然后插入文字,再把state后面的改為readonly。
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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/469147.html
下一篇:PythontkinterEntry小部件驗證錯誤:TypeError:'str'objectisnotcallable
