2

我正在用 Python 中的 Enaml 设计一个 UI。我有一个自定义控件,其中包含两个按钮。每次单击两个按钮中的任何一个时,一个是 1,另一个是 id-ed 2,我希望父容器能够感知单击了哪个按钮。因此,来自父级的事件处理程序接受一个额外的参数来区分事件的来源。这是我的代码

from enaml.widgets.api import (
    Window, Container, PushButton
)

enamldef TwoButtons(Container):  
    attr cont
    PushButton:        
        text = 'Button1'
        clicked :: cont.clicked(1)

    PushButton:
        text = 'Button2'
        clicked :: cont.clicked(2)


enamldef Main(Window):
    Container:
        attr buttonId
        event clicked

        TwoButtons:
            cont = parent

        clicked ::
            # A way to read the event handler argument goes here
            print "Someone is clicked, don't know who :("

有什么建议么?

感谢你并致以真诚的问候!

4

1 回答 1

2

从我的同事那里得到了一些线索。我们可以使用内置的change字典来跟踪事件。

完整的代码列表:

from enaml.widgets.api import (
    Window, Container, PushButton)

enamldef TwoButtons(Container):  
    attr cont
    PushButton:        
        text = 'Button1'
        clicked :: cont.clicked(1)

    PushButton:
        text = 'Button2'
        clicked :: cont.clicked(2)


enamldef Main(Window):
    Container:
        attr buttonId
        event clicked

        TwoButtons:
            cont = parent

        clicked ::
            print change.get('value')
            print "I know it's you {i:s}".format(s=change['value'])
于 2015-04-29T13:10:35.383 回答