Как я могу «refre sh» аргумент после запуска команды присваивания кнопки в Python - PullRequest
0 голосов
/ 21 апреля 2020

Я возился с 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()```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...