Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2.7 单击按钮后获取标签文本(Tkinter)_Python 2.7_Tkinter - Fatal编程技术网

Python 2.7 单击按钮后获取标签文本(Tkinter)

Python 2.7 单击按钮后获取标签文本(Tkinter),python-2.7,tkinter,Python 2.7,Tkinter,我是Python和Tkinter的新手,所以我尝试创建一个示例程序进行探索 程序基本上以标签的形式显示名称,然后在标签旁边放置4个按钮 其中一个按钮是“删除”,我想做的是,按钮将获得标签的名称,就在“删除”按钮旁边 代码是: from Tkinter import * class GUI(): def __init__(self): self.namelist = ["Mark","Anna","Jason","Lenna",

我是Python和Tkinter的新手,所以我尝试创建一个示例程序进行探索

程序基本上以标签的形式显示名称,然后在标签旁边放置4个按钮

其中一个按钮是“删除”,我想做的是,按钮将获得标签的名称,就在“删除”按钮旁边

代码是:

from Tkinter import *

class GUI():
    def __init__(self):
        self.namelist = ["Mark","Anna","Jason","Lenna",
                     "Leo","Zucharich","Robinson",
                     "AReallyLongNameThatMightExist"]
        self.canvas = Canvas(width=1200,height=700)
        self.canvas.pack(expand=YES,fill=BOTH)

    def Friends(self):
        frame = Frame(self.canvas)
        frame.place(x=600,y=300)
        #Frame for showing names of friends
        row = 0
        for x in self.namelist:
            label = Label(frame,text="%s "%x)
            chatButton = Button(frame,text="Chat")
            delButton = Button(frame,text="Delete")
            setcloseButton = Button(frame,text="Set Close")
            setgroupButton = Button(frame,text="Set Group")
            label.grid(row=row, column=0, sticky="W")
            chatButton.grid(row=row, column=1)
            delButton.grid(row=row, column=2)
            setcloseButton.grid(row=row, column=3)
            setgroupButton.grid(row=row, column=4)
            row = row + 1
        mainloop()

GUI = GUI()
GUI.Friends()
示例:如果您运行代码,那么当您单击“标记”旁边的“删除”按钮时,该按钮将返回“标记”

谢谢!

Tk按钮有一个命令选项,允许您在单击按钮时指定要运行的代码。在这种情况下,您只需将同级小部件名称传递给您的函数。您可以通过在创建时捕获小部件名称来完成此操作:

label = ...
delButton = Button(frame,text="Delete",
                   command=self.makeClosure(label))
...
def makeClosure(self, labelWidget):
    return lambda: self.onClick(labelWidget)
def onClick(self, labelWidget):
    print(labelWidget["text"])
在本例中,当我们创建delButton小部件时,该命令被定义为一个lambda,该lambda创建了一个闭包,包括定义该lambda时定义的标签变量。现在,单击delButton时,该值将传递给onClick函数,该函数可以在运行时使用该函数调用小部件上的方法