Вы можете вернуть словарь вместо списка из DropDownProjectView()
:
def DropDownProjectView():
con=sqlite3.connect(DBProjectManager2)
# return two items in each record: dropdown-item, id
con.row_factory = lambda curs, row: (str(row[0])+". "+row[1], row[0])
curs= con.cursor()
curs.execute("SELECT idProject, ProjectName FROM Project WHERE idStatus=1")
# build a dictionary with dropdown-item as key and id as value
rows = {r[0]:r[1] for r in curs}
con.close()
return rows
Затем используйте list(rows.keys())
в качестве элементов раскрывающегося списка:
rows = DropDownProjectView()
project_name_drop = ttk.Combobox (root, value=list(rows.keys()))
project_name_drop.pack()
Наконец, используйте rows[pickedString]
для получить идентификатор в GetIDFromDropDown()
:
def GetIDFromDropDown(pickedString):
# cater exceptional case
if pickedString in rows:
id = rows[pickedString]
print(id)
else:
print("invalid option: '%s'" % pickedString)