Enlace o comando para obtener retorno y botón para trabajar

Tengo una pregunta simple sobre el método bind() y el argumento de command . Por lo general, en un progtwig, puede hacer clic en un botón relacionado con lo que está haciendo para ejecutar algo o simplemente presionar la tecla de retorno. En el código de abajo, intenté hacer lo mismo y realmente funciona. Me preguntaba si la línea bttn.bind('', search) no es un poco extraña, ya que relaciona el clic del ratón con la función y no la presión del botón. .

Al principio, no quería incluir presionar la tecla de retorno para ejecutar la entrada, y había escrito el bttn = Button(wd, text='Search', bg='Light Green', command=search) , pero en ese punto la función de search no era una función dirigida por eventos y no tenía argumento de evento.

Tan pronto como quise incluir la tecla de retorno presionando para hacer el mismo trabajo, tuve (por supuesto) que escribir la función con (event) , y así usar el método de bind() para el botón del mouse.

¿Es esta la “mejor manera” de hacerlo? ¿O hay una forma más idiomática de hacerlo?

Python3 / Windows

 from tkinter import * def search(event): try: txtFile = open(str(entr.get()), 'r') except: entr.delete(0, END) entr.insert(0, "File can't be found") else: x = 0 while 1: rd = txtFile.readline() if len(rd)> x: longest = rd x = len(rd) elif rd == '': break txtFile.close() entr.delete(0, END) entr.insert(0, longest) #####MAIN##### wd = Tk() wd.title('Longest sentence searcher') entr = Entry(wd, bg='White') entr.grid(row=0, column=0) entr.bind('', search) bttn = Button(wd, text='Search', bg='Light Green') bttn.grid(row=1, column =0) bttn.bind('', search) wd.mainloop() 

La forma normal de compartir una función entre un botón y un enlace es hacer que el parámetro del evento sea opcional y no depender de él. Puedes hacerlo así:

 def search(event=None): ... bttn = Button(..., command=search) ... entr.bind('', search) 

Si omite el command y confía en un evento vinculado, perderá la accesibilidad del teclado integrado que ofrece Tkinter (puede presionar el botón y presionar la barra espaciadora para hacer clic en él).