Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用带参数的函数更改特定tkinter标签的文本_Python_Python 3.x_Tkinter - Fatal编程技术网

Python 使用带参数的函数更改特定tkinter标签的文本

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

我试图在基于参数输入的函数中引用特定的tkinter标签。我尝试了很多方法,找到了一些关于exec、eval和变量的主题,但我想避开一些不好的做法,我不知道如何通过这些方法来实现。我觉得我错过了一些非常基本的东西,但我不能对它掉以轻心

下面是我的函数的简化代码:

    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,则无法利用

希望这有帮助

詹姆斯