Untitled

Anonymous
plain_text
02/10/2026 4:18 PM
4.7 KB
8
Indexable
import sqlite3
import tkinter as tk
from tkinter import messagebox, ttk


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


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)


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)


def delete_books(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)


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_books(conn, book_id)
        except IndexError:
            messagebox.showwarning("kujdes", "zgjidhni nje liber per te fshire")

    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 liber", command=on_add)
    add_button.grid(row=3, columnspan=2, pady=5)

    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 liber", command=on_delete)
    delete_button.pack(pady=10)

    root.mainloop()


if __name__ == '__main__':
    main()
Editor is loading...
Leave a Comment