Python 用于设置tkinter小部件名称的循环

Python 用于设置tkinter小部件名称的循环,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,如何创建命名标签小部件的循环。我不知道如何将小部件名称设置为变量 from tkinter import * def dofunc(): v1.set("one") v2.set("two") v3.set("three") widget4.config(text="four") v1=StringVar() widget1=Label(root,width=10,textvariable=v1) widget1.pack() v2=StringVar()

如何创建命名标签小部件的循环。我不知道如何将小部件名称设置为变量

from tkinter import *

def dofunc():
    v1.set("one")
    v2.set("two")
    v3.set("three")
    widget4.config(text="four")

v1=StringVar()
widget1=Label(root,width=10,textvariable=v1)
widget1.pack()

v2=StringVar()
widget2=Label(root,width=10,textvariable=v2)
widget2.pack()

v3=StringVar()
widget3=Label(root,width=10,textvariable=v3)
widget3.pack()

widget4=Label(root,width=10)
widget4.pack()

root.geometry("+50+50")
root.after(500, dofunc)
root.mainloop()

我相信你想要的答案是一个容器

bag_o_widgets = {}  # A dict because you said "name", it could equally be an list with numbers for names.
def dofunc():
    for i in range(1,4):  # Generates 1,2 and 3 as inputs to the str() function for "naming".
        v = StringVar()
        bag_o_widgets[str(i)] = Label(root, width=10, textvariable=v)
        bag_o_widgets[str(i)].pack()
    bag_o_widgets["4"] = Label(root,width=10)
    bag_o_widgets["4"].pack()
    bag_o_widgets["4"].config(text="four")
    return bag_o_widgets
这是在循环中命名变量的规范方法


一个令人讨厌的文字攻击是使用多态代码。

来自John的代码。。我用这种方式

from tkinter import *

def dofunc():
    bag_o_widgets[str(2)].config(text='two')
    bag_o_widgets[str(5)].config(text='five')
    bag_o_widgets[str(10)].config(text='ten')
    bag_o_widgets[str(17)].config(text='seventeen')

root=Tk()  

bag_o_widgets = {} 
for i in range(1,21):
    bag_o_widgets[str(i)] = Label(root, width=15)
    bag_o_widgets[str(i)].pack()

root.after(100,dofunc)
root.mainloop()

您对小部件名称的定义是什么?是文本选项吗?是的。。。定义为文本。。。widget1,widget2,,,,,widget4john。。正在修改您的代码。。。我从tkinter import*def dofunc():bag____小部件[1].config(text='ok')root=Tk()bag____小部件={}对范围(1,4)内的i进行了回溯“KeyError:1”:v=StringVar()bag_____小部件[str(i)]=标签(根,宽度=10,text=str(i),textvariable=v)bag____小部件[str(i)].pack()打印(bag_______小部件)根。在(100,dofunc)之后root.mainloop