2

Python で Enamel を使用して UI を設計しています。たとえば、2 つのボタンを含むカスタム コントロールがあります。2 つのボタンのいずれかがクリックされるたびに、1 つは 1 で、もう 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 に答える