Enaml Get在事件处理中传递的参数

2024-05-26 07:46:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python设计一个使用Enaml的UI。我有一个自定义控件,包含两个按钮。每次单击这两个按钮中的任何一个,一个是1,另一个是id为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 :("

有什么建议吗?在

谢谢,并致以最诚挚的问候!在


Tags: texteventuicontainer事件window按钮控件
1条回答
网友
1楼 · 发布于 2024-05-26 07:46:58

从我同事那里得到一些线索。我们可以使用内置的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'])

相关问题 更多 >