我通常将它们保存在一个列表中,这是一种方便的方式来保存对它们的引用。请不要使用I,L,或O作为单一的数字变量,因为它们可以像数字,即 I = 1 我= 1 L = 0
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()
您使用的是相同的伊娃所有所以他们都将包含相同的数字(是你想解决的问题?)。请注意,您的代码不会像这样运行,因为Python不支持r ++语法AFAIK。 –
是的。它在所有变量中显示相同的值。而且我没有像现在这样使用代码。这只是一个伪代码。那么没有其他选择来解决这个问题了? – user3363416