У меня есть форма, где пользователь создает запись атрибутов продукта, нажав кнопку. После щелчка четыре поля со списком, одна метка и одно поле ввода загружаются в форму, составляющую запись.
Раскрывающийся список в четвертом поле со списком зависит от записей, сделанных в первых трех со списком. коробки. Конечный пользователь может нажать кнопку «Добавить» несколько раз, прежде чем делать записи. Как мне убедиться, что когда пользователь возвращается к первой записи после нажатия кнопки «N» кнопки «Добавить» и вносит изменения в поля со списком первой записи, соответствующие значения загружаются в 4-ое поле со списком?
Вот то, что у меня есть
def addItemInEdit():
global rowNum2
global brandDropdownList2, typeDropdownList2, sizeDropdownList2, qtyTextList2, itemList2,
packedDateDropdownList2
####################### Loading label, dropdowns, and text fields
itemList2.append(ttk.Label(frameEdit, text=str(rowNum2 + 1) + ". ").grid(row=rowNum2, column=0))
brandDropdownList2.append(ttk.Combobox(frameEdit, state='readonly', values=listOfBrands, width=10))
brandDropdownList2[-1].grid(row=rowNum2, column=1, pady=5, padx=5)
brandDropdownList2[-1].current(0)
typeDropdownList2.append(ttk.Combobox(frameEdit, state='readonly', values=listOftypes, width=5))
typeDropdownList2[-1].grid(row=rowNum2, column=2)
typeDropdownList2[-1].current(0)
sizeDropdownList2.append(ttk.Combobox(frameEdit, state='readonly', values=listOfSizes, width=10))
sizeDropdownList2[-1].grid(row=rowNum2, column=3, pady=5, padx=5)
sizeDropdownList2[-1].current(0)
packedDateDropdownList2.append(ttk.Combobox(frameEdit, state='disabled', width=7))
packedDateDropdownList2[-1].grid(row=rowNum2, column=4, pady=5)
qtyTextList2.append(ttk.Entry(frameEdit, width=7))
qtyTextList2[-1].grid(row=rowNum2, column=5, padx=5)
qtyTextList2[-1].insert(0, "Qty")
####################### Adding bind functions.
for item in range(len(brandDropdownList2)):
def getDates(event):
listOfDates=[]
################################## Making sure the use has made actual selections
if brandDropdownList2[len(brandDropdownList2)-1].get()!="Brand" and typeDropdownList2[len(brandDropdownList2)-1].get()!="Type" and sizeDropdownList2[len(brandDropdownList2)-1].get()!="Size":
packedDateDropdownList2[len(brandDropdownList2) - 1].config(state='readonly')
packedDateDropdownList[len(brandDropdownList) - 1].set('')
getDatesQuery = "SELECT [PackedOn] FROM SalesData where [Brand]=? AND [Type] = ? AND [Size]=?"
conForDates = pyodbc.connect(dbPath)
curForDates = conForDates.cursor()
dateListOutput = curForDates.execute(getDatesQuery,(brandDropdownList2[len(brandDropdownList2)-1].get(),typeDropdownList2[len(brandDropdownList2)-1].get(),sizeDropdownList2[len(brandDropdownList2)-1].get())).fetchall()
for item in dateListOutput:
if item[0] not in listOfDates:
listOfDates.append(item[0])
packedDateDropdownList2[len(brandDropdownList2)-1].config(values=listOfDates)
else:
packedDateDropdownList2[len(brandDropdownList2) - 1].set('')
packedDateDropdownList2[len(brandDropdownList2) - 1].config(state='disabled')
brandDropdownList2[len(brandDropdownList)-1].bind("<<ComboboxSelected>>",getDates)
typeDropdownList2[len(brandDropdownList)-1].bind("<<ComboboxSelected>>",getDates)
sizeDropdownList2[len(brandDropdownList)-1].bind("<<ComboboxSelected>>",getDates)
rowNum2 = rowNum2 + 1
Я знаю, что "For" l oop для связывания неверно, но я чувствую, что есть особенность Python, которую я не знаю.