Как сделать поисковую строку в python с tkinter?
Столкнулась с проблемой: хочу сделать что-то вроде браузера в питоне с ткинтер, но вместо отдельного окна от ткинтер открывается только строка от пайтон.
По факту работает, но открывается вместо этого окна ткинтер строка питона.
Думаю, что дело в input! Но не знаю, как изменить, помогите.
Код:
import webbrowser
from tkinter import *
from tkinter import ttk
def open_link(url):
webbrowser.open_new("https://www.youtube.com/")
def open_link2(url):
webbrowser.open_new("https://mail.google.com/")
def open_link3(url):
webbrowser.open_new("https://www.google.com/")
def open_link4(url):
search = input(entry.get())
webbrowser.open_new(f"https://www.google.com/search?q={search}")
root = Tk()
root.title("Google")
root.geometry("600x300")
lbl1 = Label(text="GOOGLE", font=("Roboto", 15))
lbl1.pack(anchor=N)
entry = ttk.Entry(root)
entry.pack(fill=X)
entry.insert(0, "Введите текст...")
button0 = ttk.Button(text="Поиск", command=open_link4(""))
button0.pack()
button1 = ttk.Button(
text="Youtube", command=lambda: open_link("https://www.youtube.com/")
)
button1.pack(pady=30)
button2 = ttk.Button(
text="Gmail", command=lambda: open_link2("https://mail.google.com/")
)
button2.pack()
button3 = ttk.Button(text="Google", command=open_link3("https://www.google.com"))
button3.pack(pady=30)
root.mainloop()
Ответы (1 шт):
input() вам решительно не нужен. Вы же хотите взаимодействовать не с консольным вводом, а работать исключительно через GUI.
def open_link4(url): # -> def open_link4():
search=input(entry.get()) # -> search=entry.get()
webbrowser.open_new(f'https://www.google.com/search?q={search}')
Убираем input(), что бы программа не ожидала ввода в консоль и не блокировала интерфейс. К тому же entry.get() будет уже достаточно для получения данных из поля.
Обратите ещё внимание на:
button0=ttk.Button(text='Поиск', command=open_link4(''))
В command нужно передавать ссылку на функцию, а не результат её вызова!
button0 = ttk.Button(text="Поиск", command=open_link4)
Но если очень нужно, то используете lambda как в других кнопках.
Вы url зачем вообще передаете, если никак его не используете?