克隆tkinter按钮与其他功能

问题描述 投票:-2回答:1

现在我正在制作一个带有以下布局的python电话簿:

|名称|姓氏|

现在我想为每个联系人Name和Surname创建一个按钮,因此2个按钮用于1个联系人* n。如果我按下名称或姓氏,则应打开包含联系人更多详细信息的框。谁能帮帮我吗?

我到目前为止尝试过:

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
python tkinter clone tk
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.