Я использую Panda и TKSheet для создания таблицы книг, которую я хочу иметь возможность редактировать, нажав на ячейку. Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я использую Panda и TKSheet для создания таблицы книг, которую я хочу иметь возможность редактировать, нажав на ячейку.

Сообщение Anonymous »

Мой код заключается в следующем:: < /p>
import sqlite3
import pandas as pd
import tkinter as tk
from tksheet import Sheet
from tkinter import messagebox

# Connect to SQLite database
conn = sqlite3.connect("your_ledger.db")
cursor = conn.cursor()

# Load joined data from Journal, Ledger, Fund, and Chart
def load_data():
query = """
SELECT
Ledger.Id AS LedgerId,
Journal.Id AS JournalId,
Journal.User_date,
Journal.Description,
Journal.Posted,
Ledger.Amount,
Fund.Id AS Fund_Id,
Fund.Name AS Fund_Name,
Chart.Id AS Account_Id,
Chart.Name AS Account_Name
FROM Ledger
JOIN Journal ON Ledger.Tran_id = Journal.Id
LEFT JOIN Fund ON Ledger.Fund_Id = Fund.Id
LEFT JOIN Chart ON Ledger.Account_Id = Chart.Id
WHERE Journal.Deleted = 0
"""
df = pd.read_sql_query(query, conn)
return df

# Save updated data from sheet to DB in one transaction
def save_data():
try:
new_data = pd.DataFrame(sheet.get_sheet_data(), columns=columns)

with conn: # Transaction context
for _, row in new_data.iterrows():
# Update Journal
conn.execute("""
UPDATE Journal
SET User_date = ?, Description = ?, Posted = ?
WHERE Id = ?
""", (row['User_date'], row['Description'], int(row['Posted']), row['JournalId']))

# Update Ledger
conn.execute("""
UPDATE Ledger
SET Amount = ?, Fund_Id = ?, Account_Id = ?
WHERE Id = ?
""", (row['Amount'], row['Fund_Id'], row['Account_Id'], row['LedgerId']))

messagebox.showinfo("Success", "Changes saved successfully.")
except Exception as e:
messagebox.showerror("Error", str(e))

# GUI setup
root = tk.Tk()
root.title("Ledger Entry Form")

df = load_data()
columns = df.columns.tolist()

sheet = Sheet(root,
data=df.values.tolist(),
headers=columns)
sheet.pack(expand=True, fill="both")

save_button = tk.Button(root, text="Save Changes", command=save_data)
save_button.pack(pady=10)

root.mainloop()
< /code>
Как видите, я загружаю запрос базы данных в файл данных, а затем в лист. Когда кнопка нажимается, лист преобразуется в файл данных, а затем база данных обновляется с его содержанием < /p>
Таблица вообще не отвечает на щелчки мыши вообще. Я попытался спросить Copilot, который предложил мне установить редактируемый True в конструкторе листа. Это не сработало. Затем он предложил включить привязки в листе, показанном в моем коде. Это тоже не сработало. Я в растерянности и не понимаю. Не могли бы вы мне помочь?


Подробнее здесь: https://stackoverflow.com/questions/796 ... be-able-to
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»