Вы можете использовать event=None
в
def callback(event=None):
и затем вы можете использовать с command=
и bind()
bind()
запустит его с event
, command=
запустит без события и будет использовать None
import tkinter as tk
from tkinter import ttk
import webbrowser
def callback(event=None):
webbrowser.open("http://google.com/search?q="+entry1.get())
root = tk.Tk()
root.title("Search Bar")
label1 = ttk.Label(root, text="Query")
label1.grid(row=0, column=0)
entry1 = ttk.Entry(root, width=50)
entry1.grid(row=0, column=1)
button1 = ttk.Button(root, text="Search", width=10, command=callback)
button1.grid(row=0, column=2)
entry1.bind("<Return>", callback)
root.mainloop()
bind()
может использоваться с различными событиями и объектами, поэтому он отправляет эту информацию в функцию - т.е. event.widget
- чтобы вы могли привязать одну и ту же функцию к разным объектам.
def callback(event=None):
print(event)
if event: # if not None
print(event.widget)