Вам нужно создать контейнер, чтобы сохранить ссылку на ваши строки. Чтобы все было аккуратно, давайте поместим все компоненты строки в класс. Тогда у нас может быть метод destroy()
, который уничтожает всю строку, и метод get()
, который получает результат из строки. Мы создадим глобальный список с именем «current_rows», в котором будут храниться все строки, которые отображаются в данный момент. Мы можем добавить в этот список, чтобы добавить строки, и удалить из этого списка, чтобы удалить строки.
import Tkinter as tk
from tkMessageBox import showerror
class Mgene:
def __init__(self, master):
columns, rows = master.grid_size()
self.animal_check=tk.Label(master, text='Enter an animal', justify = tk.LEFT, padx = 20)
self.animal_check.grid(column=0 , row=rows)
self.animal_text = tk.Entry(master, width= 50)
self.animal_text.grid(column=1, row=rows)
self.colour_check=tk.Label(master, text='Enter a colour', justify = tk.LEFT, padx = 20)
self.colour_check.grid(column=0 , row=rows+1)
self.colour_text = tk.Entry(master, width= 50)
self.colour_text.grid(column=1, row=rows+1)
def destroy(self):
self.animal_check.destroy()
self.animal_text.destroy()
self.colour_check.destroy()
self.colour_text.destroy()
def get(self):
return self.animal_text.get(), self.colour_text.get()
current_rows = []
def input_count():
try:
user_submission=int(user_text.get())
except:
showerror("Error", "That isn't a number, try again!")
else:
# add any rows needed
for num in range(len(current_rows)-1, user_submission):
current_rows.append(Mgene(root))
# remove any rows needed
while len(current_rows) > user_submission:
current_rows.pop().destroy()
def get_answers():
for row in current_rows:
print row.get()
root = tk.Tk()
user_label=tk.Label(root, text='Enter a number', justify = tk.LEFT, padx = 20)
user_label.grid(column=0 , row=0)
user_text= tk.Entry(root, width= 50)
user_text.grid(column=1, row=0)
user_submit=tk.Button(root,text="SUBMIT", command=input_count)
user_submit.grid(column=2,row=0)
user_get=tk.Button(root,text="print answers", command=get_answers)
user_get.grid(column=2,row=1)
root.mainloop()
Обратите внимание, что это дает дополнительное преимущество, заключающееся в том, что, когда приходит время выводить пользовательские данные, у нас есть хороший список строк, по которым мы можем перебирать.