从可变函数输入中获取Tkinter标签句柄?

问题描述 投票:0回答:2

Python 3

我想创建一个Tkinter标签,该标签具有从函数传递的句柄名称。例如,如果变量名称为“ hotdog”,我想创建一个名为“ hotdogLabel”的标签,该标签显示hotdog的值。我做了一个创建标签的函数,但是我不知道如何编写变量输入的脚本。这不起作用

def makeLabel(labelname,width,gridx,gridy,px,py):
    name=labelname+'label'
    name =Label(window,text=labelname,width=width).grid(row=gridx,column=gridy,padx=px,pady=py)

window = tk.Tk()
makeLabel('FOOBAR',25,1,2,5,5)
window.mainloop()
python tkinter
2个回答
0
投票

您未将值分配给使用旧值的文本。

def makeLabel(labelname,width,gridx,gridy,px,py):
    name=labelname+'label'
    name =Label(window,text=name,width=width).grid(row=gridx,column=gridy,padx=px,pady=py)

window = tk.Tk()
makeLabel('FOOBAR',25,1,2,5,5)
window.mainloop()

0
投票

我能想到的最佳解决方案是使用字典来存储具有所需名称的键以及相应的Label对象。

以您的示例为基础:

def main():
    def makeLabel(labeltext,width,gridx,gridy,px,py):
        # dynamically created label name
        labelname=labeltext+'label'

        # creates Label object and store reference to it in 'label'
        label = tk.Label(window, text=labelname,width=width)

        # places label on grid
        label.grid(row=gridx,column=gridy,padx=px,pady=py)

        # returns tuple with label name and Label object
        return (labelname, label)

    window = tk.Tk()

    # initialize dictionary
    labelDictionary = {}

    # newLblEntry will receive a tuple ('FOOBARlabel', <reference to Label object>)
    newLblEntry = makeLabel('FOOBAR',25,1,2,5,5)

    # store Label object with the key 'FOOBARlabel'
    labelDictionary[newLblEntry[0]] = newLblEntry[1]

    window.mainloop()

通过这样做,当您需要获得上面创建的标签时,只需执行Label label = labelDictionary['FOOBARlabel']

[有关Python字典的更多信息的好链接:http://www.compciv.org/guides/python/fundamentals/dictionaries-overview

© www.soinside.com 2019 - 2024. All rights reserved.