Как в tkinter при вводе числа в поле entry вывести новое окно с количеством полей entry, равным введенному числу?
Всем привет. Встала задачка - пишу программу, в которой необходимо ввести в поле entry количество точек многоугольника, а затем вывести новое окно с количеством полей entry, равным введённому числу (для ввода координат каждой точки). Так и не докопался сам, как это реализовать.
from tkinter import *
def point_amount():
global p_points
p_points = int(p_entry.get())
root = Tk()
root.title("Многоугольник")
p_label = Label(text="Кол-во точек многоугольника:")
p_label.grid(row=0, column=0, sticky="w")
p_entry = Entry()
p_entry.grid(row=0, column=1, padx=5, pady=5)
display_button = Button(text="OK", command=point_amount)
display_button.grid(row=2, column=0, padx=5, pady=5, sticky="e")
root.mainloop()
Ответы (2 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
from tkinter import *
def point_amount():
global p_points
p_points = int(p_entry.get())
top = Toplevel(root)
list_entry = []
for i in range(p_points):
_entry = Entry(top) # top
list_entry.append(_entry)
list_entry[-1].grid(row = i, column = 1)
def click():
for i in list_entry:
print(i.get())
btn = Button(top, text = 'Go ...', comman = click)
btn.grid(row = i+1, column = 1)
root = Tk()
root.title("Многоугольник")
p_label = Label(text="Кол-во точек многоугольника:")
p_label.grid(row=0, column=0, sticky="w")
p_entry = Entry()
p_entry.grid(row=0, column=1, padx=5, pady=5)
display_button = Button(text="OK", command=point_amount)
display_button.grid(row=2, column=0, padx=5, pady=5, sticky="e")
root.mainloop()
Автор решения: Иван
→ Ссылка
from tkinter import *
def point_amount():
p_points = int(p_entry.get())#не советовал бы использовать глобальную переменную. Если так нужно - создайте класс
new_window = Toplevel(root)#
entries = []#тут будут храниться поля
for i in range(p_points):
#для каждой точки создаем Entry
row = i*2+2#можно просто i+1, но так между ними будет расстояние
row_title = i*2+1
title = Label(new_window,text="Поле %i"%(i+1))
title.grid(row=row_title, column=0, padx=5, pady=5)
entry=Entry(new_window)
entry.grid(row=row, column=0, padx=5, pady=5)
entries.append(entry)
root = Tk()
root.title("Многоугольник")
p_label = Label(text="Кол-во точек многоугольника:")
p_label.grid(row=0, column=0, sticky="w")
p_entry = Entry()
p_entry.grid(row=0, column=1, padx=5, pady=5)
display_button = Button(text="OK", command=point_amount)
display_button.grid(row=2, column=0, padx=5, pady=5, sticky="e")
root.mainloop()
