Как узнать, какая кнопка нажата? Python Tkinter SQLite

#python #sql #sqlite #tkinter

#python #sql #sqlite #tkinter

Вопрос:

Я пытаюсь разработать приложение с графическим интерфейсом, которое управляет билетами из SAV. Я использую Python Tkinter, sqlite3. Моя проблема в том, что я создаю кнопки для каждого имеющегося у меня билета. Эта кнопка используется для открытия профиля тикета. Но я не знаю, как определить, какая кнопка нажата. Также каждая кнопка имеет одну и ту же команду, но отображаемые данные будут зависеть от этой кнопки.

Я пытался создать идентификатор для каждого случая, чтобы идентифицировать строку, но мне это не удалось

 for N_Nom in curseur.execute("SELECT Nom FROM client"):
    Label(FrameMain, text=N_Nom,bg='#C2C2C2',font=('Arial',12,'bold')).grid(row=c_nom.get(), column=1)
    c_nom.set(c_nom.get()   1)

for N_Code in curseur.execute("SELECT Codification FROM SAV"):
    Label(FrameMain, text=N_Code,bg='#C2C2C2',font=('Arial',12,'bold')).grid(row=c_code.get(), column=2)
    c_code.set(c_code.get()   1)

for N_State in curseur.execute("SELECT Etat_Ticket FROM SAV"):
    Label(FrameMain, text=N_State,bg='#C2C2C2',font=('Arial',12,'bold')).grid(row=c_state.get(), column=3)
    c_state.set(c_state.get()   1)

for N_Date in curseur.execute("SELECT Date_Ticket FROM SAV"):
    Label(FrameMain, text=N_Date,bg='#C2C2C2',font=('Arial',12,'bold')).grid(row=c_date.get(), column=4)
    c_date.set(c_date.get()   1)

for N_client in curseur.execute("SELECT Num_Ticket FROM SAV"):
    Label(FrameMain, text=N_client,bg='#C2C2C2',font=('Arial',12,'bold')).grid(row=c_client.get(), column=0)
    Button(FrameMain, text='Compléter', font=('Arial',14), cursor='hand2', command= lambda : config(N_client, N_Nom, N_Code, N_State, N_Date)).grid(row=c_client.get(),column=6, sticky='e')

    Label(FrameMain, text=N_client,bg='#C2C2C2',font=('Arial',12,'bold')).grid(row=c_client.get(), column=0)
    c_client.set(c_client.get()   1)
 

Итак, если вы знаете, как решить эту проблему, или если вы можете сказать мне, могу ли я сделать это лучше. Спасибо вам

Комментарии:

1. Если вы привязываете какую-либо функцию в цикле for, вам, возможно, придется использовать partial ( from functools import partial ) или, если вы не хотите использовать partial, попробуйте lambda N_client=N_client: config(N_client, N_Nom, N_Code, N_State, N_Date) . Также я даже не знаю, что config() это такое.

2. Спасибо, я попробую использовать partial. Но для config() я открываю другое окно, в котором я отображаю все данные, соответствующие нажатию кнопки, нет ничего интересного для решения этой проблемы.