Я делаю приложение с графическим интерфейсом, которое читает и записывает таблицы Excel с использованием библиотек "openpyxl" и "tkinter" (py3).
У меня есть 2 дропбокса (я использую "tkinter.ttk.OptionBox", но если вы хотите предложить какой-то другой виджет, тогда продолжайте).Я хочу, чтобы в одном выпадающем списке были имена листов, которые есть в книге Excel, а во втором - заголовки столбцов этого листа.Я сделал для пользователя кнопку обзора, чтобы просмотреть файл Excel, а также хочу открыть / загрузить книгу Excel как можно меньше раз, чтобы повысить эффективность.Кроме того, файлы, которые будут использоваться, будут довольно большими.
Я сделал это (обратитесь к коду), но проблема в том, что когда я изменяю имя листа в одном раскрывающемся списке, в другом раскрывающемся списке заголовки столбцов не изменяются, а остаются в качестве заголовка столбцапервый лист.Я искал это онлайн, но не смог найти ничего стоящего.Я был бы очень признателен за помощь.Заранее спасибо.
self.dropdownMain1Var = StringVar()
self.dropdownMain2Var = StringVar()
wbb = openpyxl.load_workbook(filepath)
wbb_worksheets = wbb.worksheets
for i in range(len(wbb_worksheets)):
wbb_worksheets[i] = str(wbb_worksheets[i]).split('"')[-2]
self.dropdownMain1Var.set(wbb_worksheets[0])
self.dropdownMain1 = OptionMenu(self.topFrame, self.dropdownMain1Var, *wbb_worksheets)
self.dropdownMain1.grid(row=5, column=0)
columnheaders = list((str(i) + ".) " + wbb[self.dropdownMain1Var.get()].cell(row=1, column=i).value) for i in
range(1, wbb[self.dropdownMain1Var.get()].max_column + 1))
self.dropdownMain2Var.set(columnheaders[0])
self.dropdownMain2 = OptionMenu(self.topFrame, self.dropdownMain2Var, *columnheaders)
self.dropdownMain2.grid(row=8, column=0)