python tkinter Виджет ввода Динамическое имя - PullRequest
0 голосов
/ 03 мая 2018

любой может подсказать мне следующее:

Я хочу динамически создать виджет «Ввод» и присвоить ему иерархическое имя (т. Е. E1, e2, e3 ... и т. Д.), Чтобы на следующем шаге легко вернуться назад для сбора информации.

см. Мой черновик кода ниже, он не работает

bowList = pd.DataFrame(np.empty([12,2]),columns=[['F','S']])

main2 = tki.Tk()
main2.minsize(800,500)

mb1 = tki.Menu(main2)

fm = tki.Menubutton(mb1)

l1 = tki.Label(main2, text="Fore Name")
l1.place(x=50,y=5,width=70)

l2 = tki.Label(main2, text="Surname")
l2.place(x=300,y=5,width=70)

h=1
for i in np.arange(1,12):
    h = i * 30 
    tki.Label(main2, text=i).place(x=10,y=h,width=15)
    e1 = tki.StringVar(main2)
    e1 ="e1%i" %(i)
    e2 = "e2%i" %(i)
    print(e1), print(e2)
    e1 = tki.Entry(main2, width=25, textvariable=e1)
    e1.place(x=50,y=h)
    e1.insert(i,i)

    e2 = tki.Entry(main2, width=25)
    e2.place(x=250,y=h)


def BowSave():
    for i in np.arange(1,12):
           #bowList.iloc[i,0] = (e11.get())
           #bowList.iloc[i,1] = (e21.get())
           #np.where(i == 10, print(bowList))
           #print(main2.children.values())
           #print(e11.get())


b1 = tki.Button(main2, text="Save", command=BowSave, height=2, width=5)
b1.place(x=500,y=5)

print(main2.winfo_name)
main2.mainloop()

Спасибо, KP

1 Ответ

0 голосов
/ 03 мая 2018

Этот фрагмент может помочь вам начать.

....

entry_text = ['e1', 'e2', 'e3']

....

    # add text entries
    for x, text in enumerate(entry_text):
        e = ttk.Entry(mFrame, width=80, name=text)
        e.grid(column=1, row=x, sticky='WE', padx=5, pady=5)
        e.insert(0, text)

....

    e1Text = master.children['mFrame'].children['e1'].get()
    e2Text = master.children['mFrame'].children['e2'].get()
...