У вас есть несколько вещей, которые нам нужно исправить.
Одна проблема, которую вы используете grid()
в той же строке, в которой вы определяете поле ввода. Из-за этого e1
на самом деле всегда будет возвращать None
, поскольку grid()
назначается таким образом.
Чтобы это исправить, вы можете сделать e1.grid()
на новой строке, и это позволит вамиспользовать e1.get()
без проблем.
Сказанное позволяет исправить ваш импорт, так как *
плохо в том смысле, что вы в конечном итоге перезапишите методы.
Поэтому вместо выполнения:
из tkinter import *
Сделайте это:
import tkinter as tk
Мы также должны изменить некоторые вещи в вашей функции.
Секция return
не собираетсяделать что-то полезное здесь. Вы не можете вернуть значения кнопке, вызвавшей функцию. Он не может быть использован каким-либо образом, поэтому вы можете удалить эту строку. Если вам нужно использовать это значение где-то, вы можете отправить его из функции туда, где вам нужно.
Связано с вашей ошибкой в вашем вопросе. Нет необходимости в аргументе e1
в вашей функции. Вы не передаете аргумент функции в первую очередь, так что это приведет к ошибке. Во-вторых, вы уже вызываете e1.get () из глобального пространства имен, поэтому аргумент не требуется.
Наконец, вам не нужно делать str(e1.get())
. Метод get()
уже возвращает строку. Он всегда будет возвращать строку.
См. Код ниже и дайте мне знать, если у вас есть какие-либо вопросы:
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
root.title('family')
root.geometry('400x200+100+200')
def b1_pg():
search = e1.get()
print(search)
ttk.Label(root, text="who do you want to search about???").grid(row=1, column=0)
e1 = ttk.Entry(root, width=40)
e1.grid(row=1, column=1)
ttk.Button(root, text="if you are ready press here", command=b1_pg).grid(row=2, column=0)
root.mainloop()