Python 使用带参数的函数更改特定tkinter标签的文本
我试图在基于参数输入的函数中引用特定的tkinter标签。我尝试了很多方法,找到了一些关于exec、eval和变量的主题,但我想避开一些不好的做法,我不知道如何通过这些方法来实现。我觉得我错过了一些非常基本的东西,但我不能对它掉以轻心 下面是我的函数的简化代码:Python 使用带参数的函数更改特定tkinter标签的文本,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我试图在基于参数输入的函数中引用特定的tkinter标签。我尝试了很多方法,找到了一些关于exec、eval和变量的主题,但我想避开一些不好的做法,我不知道如何通过这些方法来实现。我觉得我错过了一些非常基本的东西,但我不能对它掉以轻心 下面是我的函数的简化代码: def myFunction(input_num): while ArbitraryVariableName == False: # Do stuff in while loop
def myFunction(input_num):
while ArbitraryVariableName == False:
# Do stuff in while loop
if input_num== "1":
self.lbl1["text"] = "New Value 1"
elif input_num == "2":
self.lbl2["text"] = "New Value 2"
elif input_num== "3":
self.lbl3["text"] = "New Value 3"
elif input_num== "4":
self.lbl4["text"] = "New Value 4"
elif input_num== "5":
self.lbl5["text"] = "New Value 5"
# And so forth for 20+ more elif statements
您会注意到,input_num与lbl+input_num的特定tkinter标签名称直接相关。如果有帮助,下面是两个标签之一的代码,它们都遵循类似的模式:
self.lbl1 = Label(topframe, text="Old Value Test 1")
self.lbl1 .grid(column=1, row=1)
self.lbl2 = Label(topframe, text="Old Value Test 2")
self.lbl2 .grid(column=1, row=2)
# And so forth
是否有一种更干净、重复性更低的方法来实现这一点?您说您不想使用eval函数,因此可以使用标签列表,这会使代码更短: 将tkinter作为tk导入 课堂示例: 定义初始自我,主控: self.master=master self.lbl1=tk.Labelself.master,text=Old Value Test 1 self.lbl1.gridcolumn=0,row=0 self.lbl2=tk.Labelself.master,text=Old Value Test 2 self.lbl2.gridcolumn=0,row=1 self.lbls=[self.lbl1,self.lbl2] self.myfunction1 self.myfunction2 def myfunctionself,输入数量: lbls[input_num-1][text]=fNew值{input_num} def主: root=tk.tk 示例_win=exampleroot root.mainloop 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': 主要的 在这段代码中,我确实假设您从input_num变量中得到了一个整数,而不是示例中显示的字符串 如果您不使用Python3,则无法利用 希望这有帮助 詹姆斯