как получить значение из виджета входа в tkinter в python3.6

1

Я пытаюсь получить данные из окна ввода. Я не использую эти переменные. Это показывает мне пустое, когда я пытаюсь напечатать результат. Я пробовал использовать лямбда, но все еще не работал. Я новичок в этом. Пожалуйста, покажи мне, где я ошибаюсь. Я пробовал онлайн, но они более старые версии решений.

def insertdata(E1):
       print(E1)


e1 = StringVar()

L1 = Label(F1, text ="Serial No:",anchor = E)
L1.grid(row = 0 ,column = 0)

E1  = Entry(F1,textvariable = e1)
E1.grid(row = 0 ,column = 2, sticky = N)
v1 = e1.get()
Button (F2,text = "Paid",command=lambda:insertdata(v1)).pack(side= TOP)
Теги:
python-3.x
tkinter
tkinter-entry

2 ответа

1
Лучший ответ

Это как получить содержимое в виджетах entry и печати. С кодом, который вы опубликовали, вы делаете много неправильных вещей; вы не можете использовать pack и grid для размещения своего виджета в том же окне. Также никогда не делайте этого: Button (F2,text = "Paid",command=lambda:insertdata(v1)).pack(side= TOP), но всегда Button (F2,text = "Paid",command=lambda:insertdata(v1)).pack(side= TOP) свой менеджер макета на следующей строке.

ПРИМЕР

b = Button (F2,text = "Paid",command=lambda:insertdata(v1))
b.pack(side= TOP)

ПОЛНЫЙ КОД

from tkinter import *


def insertdata():
    print(e1)
    print(E1.get())


root = Tk()    

L1 = Label( text="Serial No:", anchor=E)
L1.grid(row=0, column=0)

e1 = StringVar()
E1 = Entry( textvariable=e1)
E1.grid(row=0, column=2, sticky=N)

b = Button( text="Paid", command=insertdata)
b.grid(row=10, column=30)

root.mainloop()
  • 0
    спасибо большое, буду улучшать! :)
  • 0
    уверен, что вы учитесь, совершая ошибки, рады помочь
0

Вы установили v1 в e1.get() прежде чем что-либо может быть введено в запись.

Я попробовал следующий код, и он отлично работает.

from tkinter import * # SHOULD NOT USE.
F1=Tk()
F2=Tk()
def insertdata(E1):
    print(E1)


e1 = StringVar()

L1 = Label(F1, text ="Serial No:",anchor = E)
L1.grid(row = 0 ,column = 0)

E1  = Entry(F1,textvariable = e1)
E1.grid(row = 0 ,column = 2, sticky = N)

Button (F2,text = "Paid",command=lambda:insertdata(e1.get())).pack(side= TOP) # SHOULD NOT USE.
  • 0
    Нет. Это все еще показывает пустое пространство. Я не в состоянии понять использование E1 и e1 в моем коде. E1.get() работает нормально для меня Button (F2,text = "Paid",command= lambda:insertdata(E1.get())).pack(side= TOP) как это.
  • 0
    @geekarshad Правда? Я смог получить вывод просто отлично, когда я попробовал это решение. Я отредактирую, чтобы включить полный код.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню