Я пытаюсь сохранить свои значения виджета ввода в списке с помощью кнопки «Отправить», но при этом отображается ошибка с использованием блокнота jupyter. - PullRequest
0 голосов
/ 06 апреля 2020
from tkinter import * // Libraries imported
import tkinter as tk
from tkinter import simpledialog
ROOT = tk.Tk()
strong textROOT.withdraw()

root = Tk()
s=[]                       //empty list to append entry values
i=0                        // to iterate over for loop 
for y in range(5):
   r= Label(root, text="file_"+str(y)).grid(row=i)   //5-labels created using for loop
   i=i+1
   i=0
for y in range(5):
   r=("file_"+str(y))                          //5 entry boxes created using for loop
   r = Entry(root)
   r.grid(row=i , column=1)
   i=i+1
def getInput():
    for y in range(5):                             //entry value is stored 
        r = ("file_"+str(y))
        b = r.get()
        s.append(b)
        root.destroy()
Button(root, text = "submit",command = getInput).grid(row = 5, sticky = W) 
                   //click  box 'submit' is created to store values into empty list 's'//
mainloop()                                             //code ends

// Код показывает ошибку: AttributeError: у объекта 'str' нет атрибута 'get // Я не могу сохранить значения моей записи в пустом списке S и позже получить значения записи этого списка .

1 Ответ

1 голос
/ 06 апреля 2020

r = ("file_"+str(y)), за которым следует b = r.get(), не будет волшебным образом извлекать содержимое виджета. Вам нужно хранить свои Entry виджеты в контейнере, подобном list.

. Вы также можете избавиться от 2-го l oop - почему бы не создать и Label, и Entry в том же л oop?

import tkinter as tk

root = tk.Tk()
entries = []

for y in range(5):
    tk.Label(root, text="file_"+str(y)).grid(row=y,column=0)
    r = tk.Entry(root)
    r.grid(row=y,column=1)
    entries.append(r)

def getInput():
    print ([ent.get() for ent in entries])

tk.Button(root, text = "submit", command = getInput).grid(row = 5, sticky = "w")

root.mainloop()
...