Untitled

 avatar
unknown
plain_text
16 days ago
4.0 kB
4
Indexable
import sqlite3
import tkinter as tk
from tkinter import messagebox, ttk

# Funksioni për të krijuar një lidhje me databazën dhe tabelën
def create_connection():
    conn = sqlite3.connect('books.db')
    c = conn.cursor()
    c.execute('''
        CREATE TABLE IF NOT EXISTS books (
            id INTEGER PRIMARY KEY,
            title TEXT NOT NULL,
            author TEXT NOT NULL,
            year INTEGER
        )
    ''')
    conn.commit()
    return conn

# Funksioni për të shtuar një libër të ri
def add_book(conn, title, author, year):
    c = conn.cursor()
    c.execute('''
        INSERT INTO books (title, author, year) VALUES (?, ?, ?)
    ''', (title, author, year))
    conn.commit()
    messagebox.showinfo("Sukses", "Libri u shtua me sukses!")
    view_books(conn)

# Funksioni për të shfaqur të gjithë librat
def view_books(conn):
    c = conn.cursor()
    c.execute('SELECT * FROM books')
    books = c.fetchall()
    for row in tree.get_children():
        tree.delete(row)
    for book in books:
        tree.insert("", "end", values=book)

# Funksioni për të fshirë një libër sipas ID-së
def delete_book(conn, book_id):
    c = conn.cursor()
    c.execute('DELETE FROM books WHERE id = ?', (book_id,))
    conn.commit()
    messagebox.showinfo("Sukses", "Libri u fshi me sukses!")
    view_books(conn)

# Funksioni për të marrë ID e librit të zgjedhur
def get_selected_book():
    selected_item = tree.selection()[0]
    return tree.item(selected_item)['values'][0]

def main():
    global conn
    conn = create_connection()
    def on_add():
        title = title_entry.get()
        author = author_entry.get()
        year = year_entry.get()
        add_book(conn, title, author, year)

    def on_delete():
        try:
            book_id = get_selected_book()
            delete_book(conn, book_id)
        except IndexError:
            messagebox.showwarning("Kujdes","Zgjidhni një libër për të fshirë!")

    root = tk.Tk()
    root.title("Menaxhimi i Librave")
    input_frame = tk.Frame(root)
    input_frame.pack(pady=10)

    tk.Label(input_frame, text="Titulli").grid(row=0, column=0)
    tk.Label(input_frame, text="Autori").grid(row=1, column=0)
    tk.Label(input_frame, text="Viti").grid(row=2, column=0)

    title_entry = tk.Entry(input_frame)
    author_entry = tk.Entry(input_frame)
    year_entry = tk.Entry(input_frame)

    title_entry.grid(row=0, column=1)
    author_entry.grid(row=1, column=1)
    year_entry.grid(row=2, column=1)

    add_button =tk.Button(input_frame,text="Shto Libër",
                          command=on_add)
    add_button.grid(row=3, columnspan=2, pady=5)

    # Frame për tabelën e librave
    tree_frame = tk.Frame(root)
    tree_frame.pack()

    tree_scroll = tk.Scrollbar(tree_frame)
    tree_scroll.pack(side=tk.RIGHT, fill=tk.Y)

    global tree
    tree = ttk.Treeview(tree_frame,
                        yscrollcommand=tree_scroll.set,
                        selectmode="browse")
    tree.pack()
    tree_scroll.config(command=tree.yview)
    tree['columns'] = ("ID", "Titulli", "Autori", "Viti")
    tree.column("#0", width=0, stretch=tk.NO)
    tree.column("ID", anchor=tk.CENTER, width=50)
    tree.column("Titulli", anchor=tk.W, width=200)
    tree.column("Autori", anchor=tk.W, width=150)
    tree.column("Viti", anchor=tk.CENTER, width=100)

    tree.heading("#0", text="", anchor=tk.W)
    tree.heading("ID", text="ID", anchor=tk.CENTER)
    tree.heading("Titulli", text="Titulli", anchor=tk.W)
    tree.heading("Autori", text="Autori", anchor=tk.W)
    tree.heading("Viti", text="Viti", anchor=tk.CENTER)
    view_books(conn)
    delete_button = tk.Button(root, text="Fshi Libër",
                              command=on_delete)
    delete_button.pack(pady=10)
    root.mainloop()
if __name__ == '__main__':
    main()



    
Editor is loading...
Leave a Comment