0

Pyjamas/GWT イベント処理システムを理解するのに苦労しています。現在、テストのために最新の 0.8 パジャマを使用しています。GUI プログラミングをしたことがないので、最適なイベント処理構造が何であるかはわかりません。

これまでに見つけたドキュメントについては、あまり運がありませんでした。Pajamas や GWT の良いリファレンスを知っている人はいますか?

私の主な問題は、onClick、onMouseleave などのリスナーがどこから来ているのかを理解することから来ています。それらはどのようにトリガーされますか?それらはどこで定義されていますか?それらを定義しますか?

イベント処理システムの階層構造は何ですか?

これらは非常に一般的な質問であることはわかっていますが、正しい方向へのポイントを探しているだけです。

ありがとう、私は与えられた助けに感謝します.

4

1 に答える 1

1

サンプル フォルダーのソースを調べることをお勧めします。このhttp://pyjs.org/book/output/Bookreader.html#Getting%20Startedから始めます

私にとって役立つリンクがいくつかあります: http://gwt.google.com/samples/Showcase/Showcase.html

http://pyjs.org/examples/

また、examples フォルダーには、showcaseすべての API と役立つコード サンプル /localhost/somedir/showcase/output/Showcase.html を提供する素晴らしい例があります。

API は類似しているため、いつでも書籍を確認できます (特に、コールバックなどを理解するのに役立ちます)。

http://www.amazon.com/Beginning-Google-Web-Toolkit-Professional/dp/1430210311/ref=sr_1_12?ie=UTF8&qid=1334659695&sr=8-12

http://www.amazon.com/Google-Toolkit-Applications-Ryan-Dewsbury/dp/0321501969/ref=sr_1_7?ie=UTF8&qid=1334659695&sr=8-7

Django とパジャマ用 http://www.derekschaefer.net/2011/02/08/pyjamas-django-pure-win/

ただし、Hello World の例を超えた、より優れた導入チュートリアルが必要であることに同意します。私はそれで苦労しています。幸運を

ps。動作するように見える小さなコールバックの例を作成しました。人々がここで私を修正し、この例を編集して人々にとってより役立つようになれば、私は素晴らしいと思います. ここでやろうとしているのは、2 つのページでナビゲーションを行うことだけです (2 つのクラスで表されます: Intro と Outro )。

    インポートpyjd
    from pyjamas.ui.VerticalPanel import VerticalPanel  
    from pyjamas.ui.RootPanel import RootPanel
    pyjamas.ui.SimplePanel からインポート SimplePanel
    pyjamas.ui.DockPanel から DockPanel をインポート
    from pyjamas.ui.Hyperlink import ハイパーリンク
    from pyjamas.ui.Button import ボタン
    from pyjamas.ui.HTML import HTML
    パジャマインポート画面から

    クラス Site(SimplePanel):
        def onModuleLoad(self):
            SimplePanel.__init__(self)

            self.panel = DockPanel()
            self.intro = イントロ()
            self.outro = Outro()
            self.index = HTML('インデックス')
            self.curPage = self.index

            vp=垂直パネル()
            vp.add(self.index)

            self.link1 = ハイパーリンク('メニュー項目 1')
            self.link2 = ハイパーリンク('メニュー項目 2')
            self.link1.addClickListener(getattr(self, 'onLINK1'))
            self.link2.addClickListener(getattr(self, 'onLINK2'))

            self.panel.add(self.link1, DockPanel.WEST)
            self.panel.add(self.link2, DockPanel.WEST)

            self.panel.add(self.index, DockPanel.CENTER)
            RootPanel().add(self.panel)

        def onLINK1(self):
            self.panel.remove(self.curPage, DockPanel.CENTER)
            self.panel.add(self.intro, DockPanel.CENTER)
            self.curPage = self.intro

        def onLINK2(self):
            self.panel.remove(self.curPage, DockPanel.CENTER)
            self.panel.add(self.outro, DockPanel.CENTER)
            self.curPage = self.outro

    クラス紹介(SimplePanel):
        def __init__(自己):
            SimplePanel.__init__(self)
            self.vp = VerticalPanel()
            self.html = HTML('イントロです')
            self.button = Button('クリックしてください', self)
            self.vp.add(self.html)
            self.vp.add(self.button)
            self.setWidget(self.vp)

        デフォルトonClick(自己):
            Window.alert('onClick イントロ')

    クラス Outro(SimplePanel):
        def __init__(自己):
            SimplePanel.__init__(self)
            self.vp = VerticalPanel()
            self.html = HTML('これはエンディングです')
            #こんな風にできる
            self.button1 = Button('click me1', getattr(self, 'onBUTTON1'))
            self.button2 = ボタン('click me2')
            #またはリスナーを設定する
            self.button2.addClickListener(getattr(self,'onBUTTON2'))
            self.vp.add(self.html)
            self.vp.add(self.button1)
            self.vp.add(self.button2)
            self.setWidget(self.vp)

        def onBUTTON1(self):
            Window.alert('button1 からこんにちは')
        def onBUTTON2(self):
            Window.alert('button2 からこんにちは')

    __name__ == '__main__' の場合:
        pyjd.setup('./Site.html')
        アプリ = サイト()
        app.onModuleLoad()
        pyjd.run()  

于 2012-04-17T11:04:40.063 に答える