Получить функцию, которая является командой кнопки tkinter - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу создать всплывающую подсказку для каждой кнопки в моей программе. Но вместо того, чтобы связывать событие <'Enter'> в каждом виджете, я пытаюсь получить виджет под мышью в зависимости от его местоположения, затем получить его командную функцию и затем строку документации этой функции. Мне удалось получить имя функции с помощью widget.cget ("command"), но она возвращает имя функции в виде строки, поэтому, если после этого я использую команду do c, она дает мне документация для ул. Есть ли другой способ получить ссылку на эту функцию?

    def get_widget_under_mouse(self):
    x,y = self.master.winfo_pointerxy()   
    widget = self.master.winfo_containing(x,y)
    print("widget:", widget)
    try:
        func = widget.cget("command")
        print(func)
        print(func.__doc__)
    except:
        pass
    self.master.after(2000, self.get_widget_under_mouse)

Запустив код, при наведении курсора на кнопку, называемую функцией "OpenSelector", я получаю следующий вывод:

widget: .!panedwindow.!panedwindow2.!frame.!frame.!button
253330600Open_Selector
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str  

Create a new string object from the given object. If encoding or
errors is specified, then the object must expose a data buffer
that will be decoded using the given encoding and error handler.
Otherwise, returns the result of object.__str__() (if defined)
or repr(object).
encoding defaults to sys.getdefaultencoding().
errors defaults to 'strict'.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...