Прошу прощения за мое невежество, поскольку я новичок в Python и экспериментирую.
Я создаю панель управления, которая позволяет пользователям открывать файл. Когда пользователь открывает файл, программа добавляет строку с именем файла, индикатором выполнения и несколькими кнопками в одной строке. Создание строки выполняется путем вызова функции, которая увеличивает значение строки каждый раз при ее вызове, чтобы гарантировать, что она не заменит существующую строку, а вместо этого добавляет еще одну строку под ней, чтобы представить последний файл, открытый пользователем.
Допустим, на панели инструментов есть две строки с соответствующими именами файлов и кнопками. Моя проблема в том, что когда я нажимаю кнопку в первом ряду, мне кажется, что я нажимаю кнопку во втором ряду просто потому, что при добавлении второго ряда счетчик установлен на 2, и я пытаюсь определить, какая кнопка пользователь нажимает, проверяя строку, но не может сделать это из-за счетчика.
Можно ли в любом случае "привязать" значение строки к кнопке при объявлении его при вызове функции создания кнопки, чтобы они сохраняли некоторую форму идентификатора, и я могу сказать, с какой строкой взаимодействует пользователь?
Я пытался присвоить кнопке идентификатор при вызове функции, чтобы определить, какая кнопка нажата и в какой строке, но кнопка перезаписывается во всех строках при повторном вызове функции.
Я также попытался проверить, какую кнопку нажимает пользователь, проверив текст кнопки, но это также перезаписывается при повторном вызове функции, независимо от того, отличаются ли имена кнопок в самом пользовательском интерфейсе.
Любая помощь очень ценится. Надеюсь, я был достаточно ясен.
def OpenFile(self): # user opening file which creates row with button
print("Opening")
btnCreation(self)
def btnCreation(self): # function to create buttons dynamically
incrementFunction(self)
global EXEBtn
EXEBtn = Button(Main_frame,
text="Execute",
width=8,
command=self.Execute)
EXEBtn.grid(row=RowCounter, column=2, padx=3)
def incrementFunction(self):
global RowCounter
RowCounter = RowCounter + 1
def Execute(self):
# check which row the execute button was pressed on to do something