Использование цикла for не позволяет получить все значения текстовых полей при нажатии кнопки отправки. - PullRequest
0 голосов
/ 20 марта 2019

Я создал текстовые поля, используя цикл for, в каждой строке есть кнопка отправки. При нажатии кнопки отправки должны отображаться все значения, введенные в текстовые поля. Я могу напечатать только последнее значение текстового поля столбца в строке. Как получить значение других текстовых полей.

from tkinter import *
root = Tk()
def display_text(w):
    print w.get(1.0, END)
    print x,y


for x in range(4):
    for y in range(3):

        w = Text(root, width=15, height=2)
        w.grid(row=x,column=y)
        w.insert(END,'')

        b=Button(root,text="Submit",command=lambda w=w: display_text(w))
        b.grid(row=x, column=y+1)

root.minsize(400, 400)
root.mainloop() 

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Другие ваши кнопки Submit защищены Text виджетами.

Замени свою линию

b.grid(row=x, column=y+1)

с

b.grid(row=x, column=y+3)

чтобы сделать их видимыми. Он поместит 3 текстовых поля рядом с 3 кнопками отправки.

enter image description here

0 голосов
/ 20 марта 2019

На самом деле вы создаете 3 кнопки отправки в каждой строке, но 2 из них закрыты текстовыми полями, поэтому вы можете видеть только последнюю кнопку отправки.Вот почему вы получаете только содержимое последнего текстового поля.Чтобы напечатать все содержимое текстовых полей в строке, вам нужно всего лишь создать одну кнопку отправки в каждой строке и передать список текстовых полей в командную функцию, как показано ниже:

from tkinter import *

root = Tk()

def display_text(wlist):
    for w in wlist:
        print(w.get(1.0, END))
    print(x,y)

for x in range(4):
    wlist = []  # hold the text boxes in current row
    for y in range(3):
        w = Text(root, width=15, height=2)
        w.grid(row=x,column=y)
        w.insert(END,'')
        wlist.append(w)
    b=Button(root,text="Submit",command=lambda wl=wlist: display_text(wl))
    b.grid(row=x, column=y+1)

root.minsize(400, 400)
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...