Как создавать поля для ввода (Entry), при нажатии на кнопку (Add_field)?
Как я могу добавлять поля ввода пользователя (Entry) при нажатии на кнопку "Add link", и удалять поле с конца, при нажатии на кнопку "Remove link"? Создал пустой список для сохранения введенной информации, для того чтобы использовать ее дальше в коде. Удаление и добавление элементов происходит, проблема с полями ввода.. Спасибо
def clicked():
links_info = tkr.Label(window, text="Each given node must have at least one link\nfor example: (a, b, c), c - is optional argument.", font=("Arial", 8))
links_info.grid(column=0, row=3)
btn_add = tkr.Button(window, text="Add link", bg='#0269A1', fg="#ffffff", command=add_entry_field)
btn_add.grid(column=1, row=3)
btn_remove = tkr.Button(window, text="Remove link", bg='#0269A1', fg="#ffffff", command=remove_entry_field)
btn_remove.grid(column=1, row=4)
def add_entry_field():
entryWidgets.append(tkr.Entry())
entryWidgets[-1].grid(column=0, row=4)
print(entryWidgets)
def remove_entry_field():
try:
entryWidgets.pop()
except IndexError as err:
print("List is empty: ", err)
print(entryWidgets)
btn = tkr.Button(window, text="Continue", bg='#0269A1', fg="#ffffff", command=clicked)
btn.grid(column=0, row=2)
window.mainloop()
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Текстовые поля нужно добавлять в разные ячейки
grid(при добавлении в одну ячейку они просто заменяют друг друга):def add_entry_field(): entryWidgets.append(tkr.Entry()) # Номер колонки определяется по количеству элементов в списке: entryWidgets[-1].grid(column=len(entryWidgets), row=4) print(entryWidgets)При удалении нужно вызывать метод удаления элемента управления из
grid(grid_forget) или уничтожения элемента управления (destroy):def remove_entry_field(): try: # pop() возвращает удаленный из списка элемент, к этому элементу применяем нужный метод entryWidgets.pop().grid_forget() # Или entryWidgets.pop().destroy() except IndexError as err: print("List is empty: ", err) print(entryWidgets)