Python 使用其他功能克隆tkinter按钮

Python 使用其他功能克隆tkinter按钮,python,tkinter,clone,tk,Python,Tkinter,Clone,Tk,现在,我正在编写一本python电话簿,其布局如下: |姓名|姓| 现在我想为每个联系人的姓名和姓氏创建一个按钮,因此为1个联系人*n创建2个按钮。如果我按姓名或姓氏,将打开一个包含联系人详细信息的框。 有人能帮我吗 到目前为止,我尝试了以下几点: prename = ["John", "Jack"] surname = ["Tompson", "Daniels"] x = 0 y = 0 for pn in prename: pre = Button(main, text=pn)

现在,我正在编写一本python电话簿,其布局如下:

|姓名|姓|

现在我想为每个联系人的姓名和姓氏创建一个按钮,因此为1个联系人*n创建2个按钮。如果我按姓名或姓氏,将打开一个包含联系人详细信息的框。 有人能帮我吗

到目前为止,我尝试了以下几点:

prename = ["John", "Jack"]
surname = ["Tompson", "Daniels"]
x = 0
y = 0
for pn in prename:
    pre = Button(main, text=pn)
    pre.grid(row=x, column=0)
    x += 1
for sn in surname:
    sur = Button(main, text=sn)
    sur.grid(row=y, column=1)
    y += 1

您需要将按钮与按下按钮时要执行的功能相关联。我使用
lambda
将特定名称传递给函数调用

还有,;当需要循环索引时,使用
enumerate
更具可读性

from tkinter import *

main = Tk()

prename = ["John", "Jack"]
surname = ["Tompson", "Daniels"]

def get_prename(n): # Callback function for prename buttons
    print(n)

def get_surname(n): # Callback function for surname buttons
    print(n)

for x, pn in enumerate(prename):
    pre = Button(main, text=pn, command=lambda pn=pn: get_prename(pn))
    pre.grid(row=x, column=0)

for y, sn in enumerate(surname):
    sur = Button(main, text=sn, command=lambda sn=sn: get_surname(sn))
    sur.grid(row=y, column=1)

到目前为止你都试了些什么?我刚刚编辑了它非常感谢你!你帮了我很多,这正是我一直在寻找的。@milli727但你说应该打开一个盒子。它只打印。我建议您使用
tkinter.messagebox.showinfo(pn)
是的,但这是我的主要问题。我想我可以自己解决剩下的问题。我尽量绕过MessageBox,因为设计对我很重要,我不想改变背景、前景。。。