Я пытаюсь разрешить пользователю вводить столько строк, сколько он хочет, нажимая какую-то кнопку «+», и сохранять строки в списке. (Он вводит первую строку, нажимает «+», появляется другое поле ввода и т. Д.)
На данный момент вот что у меня есть:
def addEntry(window, r, e):
if r < 9:
global entries
entries.append(e.get())
r += 1
e = tk.Entry(window)
e.grid(column=1, row=r)
add = tk.Button(window, text=' + ', command=lambda:addEntry(window, r, e))
add.grid(column=2, row=r, sticky=tk.W)
else:
errmsg = 'Max. 10 items'
tk.Label(window, text=errmsg).grid(column=1, row=r+1)
import tkinter as tk
global entries # the main list of strings
entries = []
r = 0 # index for rows ; will not be 0 in the final code as there will be other widgets
win = tk.Tk()
e = tk.Entry(win)
e.grid(column=1, row=r)
add = tk.Button(win, text=' + ', command=lambda:addEntry(win, r, e))
add.grid(column=2, row=r, sticky=tk.W)
win.mainloop()
Это не элегантно, и последняя запись не записана.
Я пытался создать entries
список элементов Entry () (не e.get ()), но тогда я не могу получить доступ к строкам (TclError: invalid command name ".!entry4"
). Я попытался эмулировать this , что заставило меня сделать entries
глобальной переменной; Я пытался использовать this , но я не до конца понимаю первый ответ, и, насколько я могу судить, строки не записываются; Я попытался адаптировать класс, определенный во втором ответе, но не смог добавить кнопки динамически. (Хотя мне нравится идея сделать урок.) Я чувствую, что должен быть в состоянии это сделать, но, потратив на это целый день, я мог бы также попросить о помощи.