Привязать или команду для возврата и кнопку для работы

У меня есть простой вопрос о методе bind() и аргументе command . Обычно в программе вы можете нажать кнопку, связанную с тем, что вы делаете, чтобы выполнить что-либо или просто нажать клавишу возврата. В приведенном ниже коде я попытался сделать то же самое, и он действительно работает. Я просто спрашивал себя, не является ли строка bttn.bind('<Button-1>', search) немного странной, поскольку она связывает щелчок мышью внутри кнопки с функцией, а не нажатие самой кнопки ,

Вначале я не хотел включать нажатие клавиши возврата для выполнения записи, и я написал bttn = Button(wd, text='Search', bg='Light Green', command=search) , но в это указывает, что функция search не была функцией, управляемой событием, и не имела аргумента события.

  • Как обработать событие закрытия окна в Tkinter?
  • Система событий в Python
  • Sqlalchemy mixins / и прослушиватель событий
  • Как связать собственные события в текстовом виджете Tkinter после того, как он будет привязан текстовым виджетами?
  • Вычерчивающая линия point_handler point_handler и отображение координат в matplotlib
  • Отправить одностороннее сообщение всем потокам в Python
  • Как только я захотел включить клавишу возврата, нажав для выполнения той же самой работы, я (конечно) написал функцию с (event) и, таким образом, использовал метод bind() для кнопки мыши.

    Это лучший способ сделать это? Или есть более идиоматический способ сделать это?

    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('<Return>', search) bttn = Button(wd, text='Search', bg='Light Green') bttn.grid(row=1, column =0) bttn.bind('<Button-1>', search) wd.mainloop() 

  • Как изменить файлы dbf в Python
  • Python: запись в новую строку файла
  • Python: что делает полуколона?
  • Django: ошибка «Без модуля с именем context_processors» после перезагрузки
  • Реализации Python: Inflate и Deflate
  • Как извлечь текст из файла PDF в Python?
  • One Solution collect form web for “Привязать или команду для возврата и кнопку для работы”

    Обычный способ совместного использования функции между кнопкой и привязкой состоит в том, чтобы сделать параметр события необязательным и не зависеть от него. Вы можете сделать это следующим образом:

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

    Если вы опустите command и полагаетесь на связанное событие, вы потеряете встроенную доступность клавиатуры, которую предлагает Tkinter (вы можете перейти к кнопке и нажать пробел, чтобы щелкнуть ее).

    Python - лучший язык программирования в мире.