我想在 tkinter Text 小部件中为文本的当前长度制作标签,但我的代码在做最后一个文本框,所以我必须做什么?
from tkinter import *
win=Tk()
win.geometry("700x350")
text_all=[]
label_all=[]
for i in range(1,11):
text=Text(win, width=20, height=1, font=('Calibri 14'))
text.grid(row=i-1,column=0)
text_all.append(text)
label=Label(win, text="Total Characters", justify=CENTER, font=('11'))
label.grid(row=i-1, column=1)
label_all.append(label)
for i in range(1,11):
def update(event):
label_all[i-1].config(text="Total Characters: "+str(len(text_all[i-1].get("1.0", 'end-1c'))))
text_all[i-1].bind('<KeyPress>', update)
text_all[i-1].bind('<KeyRelease>', update)
win.mainloop()
当update()
被执行时,的值i
将是最后分配的值后的for循环中,即,10。
您需要捕获所需的值i
并将此值传递给update()
using 参数默认值:
for i in range(1, 11):
def update(event, i=i):
label_all[i-1].config(text="Total Characters: "+str(len(text_all[i-1].get("1.0", 'end-1c'))))
...
您也可以将两个 for 循环合并为一个:
for i in range(1,11):
def update(event, i=i):
label_all[i-1].config(text="Total Characters: "+str(len(text_all[i-1].get("1.0", 'end-1c'))))
text=Text(win, width=20, height=1, font=('Calibri 14'))
text.grid(row=i-1,column=0)
text.bind('<KeyPress>', update)
text.bind('<KeyRelease>', update)
text_all.append(text)
label=Label(win, text="Total Characters", justify=CENTER, font=('11'))
label.grid(row=i-1, column=1)
label_all.append(label)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句