首页 > 解决方案 > 重命名 tkinter 中的标签

问题描述

我和 tkinter 一起工作。我想更改标签的名称。通过在字段中输入字符并点击按钮,标签被一一重命名。也就是我第一次输入字符“Hello”,然后那个字符被插入到标签中;然后将其从现场移除。这次我必须为下一个标签输入一个字符。依此类推,直到结束(在 for 循环的帮助下)。我这样做了,但它仅适用于第一个标签,不适用于下一个标签):

win=Tk()
size=3
lbls=[]
frms=[]
def func():
    for i in range(6,9):
        lbls[i].configure(text=name.get())
        
for i in range(size):
    for j in range(size):
        frm=Frame(win,bd=2,relief="sunken")
        frm.grid(row=i,column=j)
        frms.append(frm)
        lbl=Label(frm,bg="white",fg="red",width="5")
        lbl.grid(row=0,column=0)
        lbls.append(lbl)
name=Entry(win)
name.grid(row=4,column=0)
btn=Button(win,text="Start",font=("Arial",14),command=func)
btn.grid(row=3,column=0)
win.mainloop()

标签: pythonloopstkinter

解决方案


您需要使用计数器并在函数内增加它。基本上,for循环不会等待您输入内容并按下按钮:

counter = 0
def func():
    global counter

    lbls[counter].configure(text=name.get()) 
    
    counter += 1 # Increase it by 1
    if counter >= len(lbls): # If counter is greater than items in list, then reset
        counter = 0
    name.delete(0,'end') # Clear the entry

这将在您每次按下按钮时不断更新文本。


一些设计提示:columnspan为您的按钮和条目添加

name.grid(row=4,column=0,columnspan=3)
btn.grid(row=3,column=0,columnspan=3)

推荐阅读