gpt4 book ai didi

python - 如何在 tkinter 文本小部件中为文本的当前长度制作许多标签

转载 作者:行者123 更新时间:2023-12-04 14:53:06 26 4
gpt4 key购买 nike

我想在 tkinter 文本小部件中为文本的当前长度制作标签但我的代码做最后一个文本框那我该怎么办?

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():

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)

关于python - 如何在 tkinter 文本小部件中为文本的当前长度制作许多标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68734860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com