Я возился с python и, по сути, просто пытался подобрать его как язык, пытаясь сделать из него что-то полезное. Я застрял в течение нескольких часов, пытаясь отладить мой код. Я пытаюсь сделать органайзер базы данных таким способом, который позже будет делать некоторые вычисления, но в настоящее время я просто пытаюсь заставить программу читать файл Excel, добавить каждую строку в первом столбце в 1-ом списке (Удалось это сделать), а также использовать две кнопки «Pievienot» (добавить) и «Nodzēst» (удалить). Проблема с этим кодом состоит в том, что он запустится и выяснит, какой номер самой высокой строки не является пустым, и вернет его, поэтому я знаю, где в листе Excel добавить новую ячейку (из окна ввода). Это прекрасно работает, если я добавляю один элемент, но если я пытаюсь добавить два - один за другим, он просто переопределит. Насколько я понимаю, это не обновление команды sheet_obj.max_row, но я также не уверен, как заставить это сделать это, так как добавление +1 к аргументу по какой-то причине не будет работать.
Вот код:
import openpyxl
import pandas as pd
def pievienot_kat():
rownr = augstakais + 1
xlsx_obj = openpyxl.load_workbook("./DataBase/KATEGORIJAS/KATEGORIJAS.xlsx") # faila atrasanas vieta
sheet_obj = xlsx_obj.active # atvertais sheet
sheet_obj.cell(row=rownr, column=1).value = e.get() # pieskir nakamajai tuksajai rindai ievadito nosaukumu
xlsx_obj.save("./DataBase/KATEGORIJAS/KATEGORIJAS.xlsx") # saglabā failu
listbox_kat.insert(END, e.get()) # refresho listboxu pievienojot jauno kategoriju
def izdzest_kat():
print(listbox_kat.get(ACTIVE))
xlsx_obj = openpyxl.load_workbook("./DataBase/KATEGORIJAS/KATEGORIJAS.xlsx") # faila atrasanas vieta
sheet_obj = xlsx_obj.active # atvertais sheet
for i in range(1, augstakais + 1):
if sheet_obj.cell(row=i, column=1).value == listbox_kat.get(ACTIVE):
listbox_kat.delete(ACTIVE)
df_kat = pd.read_excel("./DataBase/KATEGORIJAS/KATEGORIJAS.xlsx")
df_rec = pd.read_excel("./DataBase/RECEPTES/RECEPTES.xlsx")
df_prod = pd.read_excel("./DataBase/PRODUKTI/produkti.xlsx")
root = Tk() # main window
root.title("Kārumlādes kalkulators")
root.geometry("800x500")
# frame layouts
topFrame = LabelFrame(root, text="Kategorijas", width=400, height=50, padx=5, pady=5)
# layout all of the main containers
root.grid_rowconfigure(1, weight=1)
root.grid_columnconfigure(0, weight=1)
topFrame.grid(row=1, column=0, padx=1, pady=5, sticky=N)
# widgets for top frame
listbox_kat = Listbox(topFrame, height=7)
e = Entry(topFrame)
e.insert(0, "Nosaukums")
b1 = Button(topFrame, text="Pievienot", height=1, width=7, command=pievienot_kat)
b2 = Button(topFrame, text="Nodzēst", height=1, width=7, command=izdzest_kat)
# layout the widgets in the top frame
topFrame.grid_rowconfigure(1, weight=1)
topFrame.grid_columnconfigure(0, weight=1)
listbox_kat.grid(columnspan=2, sticky=W)
e.grid(row=1, column=0, columnspan=2, sticky=W)
b1.grid(row=2, column=0, sticky=W)
b2.grid(row=2, column=1, sticky=W)
# functions for top frame
xlsx_obj = openpyxl.load_workbook("./DataBase/KATEGORIJAS/KATEGORIJAS.xlsx") # faila atrasanas vieta
sheet_obj = xlsx_obj.active # atvertais sheet
cell_obj = sheet_obj.cell(row=1, column=1) # vajadzīgā šūna
augstakais = sheet_obj.max_row
print(augstakais)
listbox_kat.grid(row=0, column=0)
for i in range(1, augstakais+1):
entry = sheet_obj.cell(row=i, column=1).value
listbox_kat.insert(END, entry)
# layout the widgets in the top frame
botFrame.grid_rowconfigure(1, weight=1)
botFrame.grid_columnconfigure(0, weight=1)
listbox_rec.grid(columnspan=2)
e2.grid(row=1, column=0, columnspan=2)
b3.grid(row=2, column=0, sticky=W)
b4.grid(row=2, column=1, sticky=W)
root.mainloop()```