问题描述
我想在鼠标悬停在 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 的示例应该适用于您的情况。您需要做的基本上如下:
- 在 Python 中创建一个类,该类派生自其小部件 你想处理事件
- 覆盖该小部件中的句柄方法
这可能如下所示:
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。
祝你好运
安德烈亚斯