Как установить связь между контрольными кнопками и кнопкой для записей из базы данных?

Привет ٍEveryOne из братьев У меня есть один вопрос о моей новой программе, которая представляет собой телефонную книгу, которую я пишу, и мой вопрос касается кнопки-флажка и кнопки, которую я хочу сделать одним списком номеров с именем, фамилией и адресом из базы данных, которую я создал В этом списке есть 1 контрольная кнопка для каждого числа и две кнопки для редактирования и удаления Теперь я ищу один способ узнать, как все контрольные кнопки и кнопки в списке связаны друг с другом, что это означает, что каждая запись из базы данных в списке с одной контрольной кнопкой и Кнопки для этого должны быть в одном соединении, что, когда эта контрольная кнопка выбрана, это кнопки для редактирования и удаления работы для этой записи из базы данных, поэтому мы должны соединить здесь каждую запись в этом списке, чтобы она была связана с контрольной кнопкой и кнопками для работы с ней и Это изменение в базе данных должно быть видно.

      from sqlite3.dbapi2 import enable_callback_tracebacks
from tkinter import *
from tkinter import ttk
import sqlite3
from tkinter import messagebox
from typing import Sized
from PIL import ImageTk, Image


win = Tk()

win.geometry("1250x800")

win.title('PhoneBook Of Manoochehr')

win.iconbitmap('icon.ico')

s = list

my_pic = Image.open('pic4.jpg')

resized = my_pic.resize((1250,800),Image.ANTIALIAS)

new_pic = ImageTk.PhotoImage(resized)

my_label = Label(win, image=new_pic)
my_label.pack()


lb = Label(win, text='Name', font=5)
lb.place(x=900, y=40)

en = Entry(win , width = 60, bd = 3, font=('Arial', 15) )
en.place(x = 225, y = 42)

lb1 = Label(win, text='Familly :', font=5)
lb1.place(x=835, y=90)

en1 = Entry(win , width = 60 , bd = 3, font=('Arial', 15) )
en1.place(x=160 , y=93)

lb2 = Label(win, text='Number :', font=5)
lb2.place(x=840, y=195)

en2 = Entry(win , width = 60 , bd = 3, font=('Arial', 15) )
en2.place(x = 160 , y = 195)

lb3 = Label(win, text='Address :', font=5)
lb3.place(x=885, y=245)

en3 = Entry(win , width = 65, bd = 3, font=('Arial', 15))
en3.place(x = 150 , y = 246)

def savebtn():
    connection = sqlite3.connect('DBphonebook.db')
    c = connection.cursor()
    c.execute("INSERT INTO phonebook(Name, Familly, Number, Address) 
    VALUES('%s', '%s', '%s', '%s')"
    %(en.get(), en1.get(), en2.get(), en3.get()))
    connection.commit()
    connection.close()
    messagebox.showinfo("Success" , "Done!")
    en.delete(0, END)
    en1.delete(0, END)
    en2.delete(0, END)
    en3.delete(0, END)

btn = Button(win, text='Save', padx=50, pady=10, font=20, 
background='pink', command=savebtn)
btn.place(x= 700, y=350)



def clear_edit_btn():
    global s
    connection = sqlite3.connect('DBphonebook.db')
    c = connection.cursor()
    search = c.execute('SELECT * FROM phonebook')
    s = list(search)
    x = 0
    top1 = Toplevel()
    top1.geometry("1250x800")
    top1.title('Edit And Delete')
    main_frame = Frame(top1)
    main_frame.pack(fill=BOTH, expand=1, pady=50)
    my_canvas = Canvas(main_frame)
    my_canvas.pack(side=LEFT, fill=BOTH, expand=1)
    my_scrollbar = ttk.Scrollbar(main_frame, orient=VERTICAL, 
    command=my_canvas.yview)
    my_scrollbar.pack(side=RIGHT, fill=Y)
    my_canvas.configure(yscrollcommand=my_scrollbar.set)
    my_canvas.bind('<Configure>', lambda e: 
    my_canvas.configure(scrollregion=my_canvas.bbox("all")))
    second_frame = Frame(my_canvas)
    second_frame.configure(background='GREEN')
    my_canvas.create_window((0,0), window=second_frame, anchor="nw")
    lbl = Label(top1, text='Address', font=5)
    lbl.place(x=495, y=15)
    lbl = Label(top1, text='Number', font=5)
    lbl.place(x=870, y=15)
    lbl = Label(top1, text='Familly', font=5)
    lbl.place(x=990, y=15)
    lbl = Label(top1, text='Name', font=5)
    lbl.place(x=1145, y=15)


def deletebtn(arg):
    global s
    a = 0
    a += 1
    for j in s:    
        if arg == a:
            connection = sqlite3.connect('DBphonebook.db')
            c = connection.cursor()
            c.execute("DELETE from phonebook WHERE Name= :Name AND Familly= 
            :Familly AND Number= :Number AND Address= :Address",
            {'Name':j[0], 'Familly':j[1], 'Number':j[2], 'Address':j[3]})
            connection.commit()
            connection.close()



 



    b = 0
    for i in s:
        b += 1
        x += 20
        Button(second_frame, text='Edit', bd=3).grid(row=x, column=100, 
        pady=10, padx=10)
        Button(second_frame, text='Delete', bd=3, command=lambda: 
        deletebtn(b)).grid(row=x, column=50, pady=10, padx=10)
        Checkbutton(second_frame).grid(row=x, column=0, pady=10, padx=10)
        lb = Label(second_frame, text=i[3]).grid(row=x, column=150, 
        pady=10, padx=130)
        lb = Label(second_frame, text=i[2]).grid(row=x, column=200, 
        pady=10, padx=30)
        lb = Label(second_frame, text=i[0]).grid(row=x, column=300, 
        pady=10, padx=30)
        lb = Label(second_frame, text=i[1]).grid(row=x, column=250, 
        pady=10, padx=30)


        btn1 = Button(win, text='List , Edit And Delete', padx=50, pady=10, 
        font=20, background='pink', command=clear_edit_btn)
        btn1.place(x= 300, y=350)

win.mainloop()

0 ответов

Другие вопросы по тегам