2011年11月23日 星期三 14:35
我仿照TraitsUi中的Python source browser例子
写了一个基于TabularEditor的目录树,
Item( 'files', editor = TabularEditor( editable = False,
selected = 'file_info',#这一项可以捕获被选中的Traits实例,并返回给实例给file_info
adapter = FileInfoAdapter(),
operations = []
), style = 'custom', show_label = False ) )
我希望能够通过双击来激发某个事件。
我在TabularEditor的源码中:
# The optional extended name of the trait to synchronize left double click
# data with. The data is a TabularEditorEvent:
dclicked = Str
发现了单击,双击,右击等一系列的关键字,但是我尝试使用
dclicked=‘someInstance’
然后在:
_someInstance_changed(self):
中得不到任何值,我也测试了其他的关键字,也没有效果包括单击,右击,双右击等。
我查看了TabularEditor的TabularAdapter基类中也没有找到相关的处理鼠标事件的方法。只有一些关于添删改查的操作。
在TraitsUi3.0的源码中另外的几个例子里面都没有涉及到鼠标事件的相应。
未果,希望大家帮我看看。谢谢。
2011年11月23日 星期三 15:41
dclicked 是一个Event属性的名,这样用:
class A(HasTraits):
double_clicked = Event
editor = Item("...", editor = TabularEditor( dclicked = "double_clicked" ))
def _double_clicked_fired(self, event):
print event
2011年11月23日 星期三 21:10
明白了,着是一个属性,用来关联本地的事件。
只是如果只是这么一个事件,如何获取被双击的Traits Instance呢?
这个event对象不知道该怎么操作?
比如我想获取被双击的行的实例··
2011年11月24日 星期四 08:40
你可以用一个全局变量保存event,然后在IPython中查看它的属性。或者在双击事件中:
if event:
print event.get()
import inspect
print inspect.getabsfile(event.__class__)
这样可以看到event的所有Trait属性以及event类定义的位置
Zeuux © 2024
京ICP备05028076号