当鼠标悬停而不是 pyFLTK 中的小部件时如何调用函数?

Posted

技术标签:

【中文标题】当鼠标悬停而不是 pyFLTK 中的小部件时如何调用函数?【英文标题】:How to call a function when mouse over and not over a widget in pyFLTK? 【发布时间】:2021-05-27 09:51:06 【问题描述】:

我想在鼠标悬停在Fl_Widget 上时调用一个函数,并在鼠标未悬停在小部件上时调用另一个函数。就像我的代码 Fl_Input 一样,当鼠标悬停在 Fl_Input 上而不是结束时,如何调用函数?

这是我的代码:

from fltk import *

win = Fl_Window(400,200)
win.label('Set Text') 

def enter(w):
    fl_message('Enter')

def leave(w):
    fl_message('Leave')

inp = Fl_Input (100, 10, 100, 20, 'Input: ' )
out = Fl_Output(100, 60, 100, 20, 'Output: ')
inp.when(FL_WHEN_ENTER_KEY)
inp.callback(enter)
win.end()
win.show()
Fl.run()

【问题讨论】:

【参考方案1】:

您知道 pyFltk 附带的测试脚本吗?特别是,有一个名为 handle_events.py 的示例应该适用于您的情况。你要做的基本上是以下几点:

    在 Python 中创建一个类,该类派生自它的小部件 你想处理事件 覆盖该小部件中的句柄方法

这可能如下所示:

class EventHandler(Fl_Input):
def __init__(self, X, Y, W, H, L):
    Fl_Input.__init__(self, X, Y, W, H, L)
    
def handle(self, event):
    if event == FL_ENTER:
        fl_message('Enter')
        return 1
    elif event == FL_LEAVE:
        fl_message('Leave')
        return 1
    else:
        return 0

注意返回值:如果事件被正确处理,则必须返回 1,否则返回 0。

祝你好运

安德烈亚斯

【讨论】:

以上是关于当鼠标悬停而不是 pyFLTK 中的小部件时如何调用函数?的主要内容,如果未能解决你的问题,请参考以下文章

当鼠标悬停在 Firefox 中的嵌入式 iframe 上时,防止父页面滚动

如何检测按下的鼠标何时进入不同框架中的小部件

如何使 CSS3 悬停过渡只运行一次,而不是在用户“取消悬停”后“倒带”?

如何使PNG中的悬停在透明度上不计为悬停?

如何通过拖放获取鼠标下QLayout中的小部件?

用于离开悬停的 CSS 伪类