我想创建一个标签并同时分配它。 例如,
ivar=StringVar()
for i in range(0,len(str)):
w = Label(master, textvariable=ivar)
w.grid(row=r,column=c)
ivar.set(i)
r++
c++
.......
root.update()
这只是一个sudo的例子。我只想生成n个标签,我不知道n的值,每次更新时它都会改变。我使用root.update()来更新标签。任何人都可以帮我吗?
提前致谢。
答案 0 :(得分:0)
我通常将它们保存在列表中,这是一种方便的方法来保存对它们的引用。请不要使用i,l或o作为单个数字变量,因为它们看起来像数字,即 I = 1 I =升 升= O
import sys
if sys.version_info[0] < 3:
import Tkinter as tk ## Python 2.x
else:
import tkinter as tk ## Python 3.x
class TestLabels():
def __init__(self, parent, num_labels):
self.parent = parent
self.string_var_list=[]
tk.Button(self.parent, text="Exit", command=self.parent.quit,
bg="orange").grid(row=100)
self.create_labels(num_labels)
## change one label
str_var=self.string_var_list[10]
str_var.set("***changed***")
def create_labels(self, num_labels):
"""create labels, 5 to a row
"""
r=0
c=0
colors=["lightblue", "yellow", "white", "pink", "lightgreen"]
for ctr in range(num_labels):
s_var=tk.StringVar()
## won't save the Label ID since you use StringVar to change it
tk.Label(self.parent, textvariable=s_var,
bg=colors[c]).grid(row=r, column=c, sticky="nsew")
s_var.set("Label #%d" % (ctr))
self.string_var_list.append(s_var)
c += 1
if c > 4:
c=0
r += 1
if __name__ == "__main__":
root = tk.Tk()
MA=TestLabels(root, 14)
root.mainloop()