Клонирование Ткинтера Кнопки с другой функцией - PullRequest
0 голосов
/ 01 сентября 2018

сейчас я работаю над телефонной книгой python со следующим макетом:

| Имя | Фамилия |

Теперь я хочу создать кнопку для каждого контакта Имя и Фамилия, поэтому 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

1 Ответ

0 голосов
/ 01 сентября 2018

Вам необходимо связать кнопки с функциями, которые вы хотите выполнить при нажатии на них. Я использую 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)
...