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

问题描述

我想在鼠标悬停在 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,'Output: ')
inp.when(FL_WHEN_ENTER_KEY)
inp.callback(enter)
win.end()
win.show()
Fl.run()

解决方法

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

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

这可能如下所示:

class EventHandler(Fl_Input):
def __init__(self,X,Y,W,H,L):
    Fl_Input.__init__(self,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。

祝你好运

安德烈亚斯