使用其他功能克隆tkinter按钮

时间:2018-09-01 17:24:43

标签: 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)
    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

1 个答案:

答案 0 :(得分:0)

按下按钮时,您需要将按钮与想要执行的功能相关联。我使用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)