Python和科学计算认证群组  - 讨论区

标题:关于TraitsUi中TabularEditor的dclicked参数

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哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号