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

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

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

Как только я захотел включить клавишу возврата, нажав для выполнения той же самой работы, я (конечно) написал функцию с (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() 

  • Как создать модальный диалог в tkinter?
  • Что контролирует автоматическое изменение размера окна в Tkinter?
  • Как периодически запускать функцию в python
  • Почему мои кнопки изображения не отображаются?
  • Полоса прокрутки Python Tkinter для фрейма
  • Python - несколько кадров с менеджером гридов
  • Как я могу отображать изображение с помощью подушки?
  • Почему параметр Button «команда» выполняется при объявлении?
  • One Solution collect form web for “Привязать или команду для возврата и кнопку для работы”

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

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

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

    Interesting Posts

    Как объединить два итератора python?

    Экран Pygame замерзает, когда я его закрываю

    Как многократное наследование работает с аргументами super () и разными __init __ ()?

    Использование Python для анализа файла для вложенных циклов

    Что такое правильный синтаксис для обмена значениями столбцов для выбранных строк в кадре данных pandas, используя только одну строку?

    Выводить изображения в html с помощью python

    Как написать HTTP-сервер python для прослушивания на нескольких портах?

    Процесс против потока в отношении использования Queue () / deque () и переменной класса для связи и «ядовитой таблетки»

    Как я могу указать новую строку в Python?

    NoSuchElementException при попытке использования Selenium Python

    Запуск внешних программ Python с помощью Eclipse PyDev

    деактивировать конфликт в virtualenvwapper и anaconda

    Как разбирать файл DOT в Python

    Python: получение строки, которая имеет максимальное значение в группах с помощью groupby

    Как легко печатать текст ascii-art?

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