我很难理解睡衣/ GWT事件处理系统。我目前正在使用最新的0.8睡衣来测试。我不确定什么是最好的事件处理结构,因为我从来没有做过GUI编程。睡衣事件处理
我到目前为止找到的文档还没有太多运气。有谁知道睡衣或GWT的一个很好的参考?
我的主要困难来自理解onClick,onMouseleave等听众来自哪里?他们如何触发?他们在哪里定义?我是否定义它们?
什么是事件处理系统的分层结构?
我知道这些都是非常一般的问题,但我真的只是在正确的方向寻找一个点。
谢谢,我感谢任何帮助。
我很难理解睡衣/ GWT事件处理系统。我目前正在使用最新的0.8睡衣来测试。我不确定什么是最好的事件处理结构,因为我从来没有做过GUI编程。睡衣事件处理
我到目前为止找到的文档还没有太多运气。有谁知道睡衣或GWT的一个很好的参考?
我的主要困难来自理解onClick,onMouseleave等听众来自哪里?他们如何触发?他们在哪里定义?我是否定义它们?
什么是事件处理系统的分层结构?
我知道这些都是非常一般的问题,但我真的只是在正确的方向寻找一个点。
谢谢,我感谢任何帮助。
我建议你在示例文件夹中学习源代码。开始与这个http://pyjs.org/book/output/Bookreader.html#Getting%20Started
有一些链接这是有帮助的,我: http://gwt.google.com/samples/Showcase/Showcase.html
此外,在示例文件夹中有一个名为showcase
一个很好的例子,让你所有的API和一些有用的代码样本 /localhost/somedir/showcase/output/Showcase.html
由于API是类似的,你可以随时检查他们的书籍(特别是对理解回调等有帮助..):
的Django和睡衣 http://www.derekschaefer.net/2011/02/08/pyjamas-django-pure-win/
不过我同意有超越hello world示例更好的入门教程的巨大需求。我自己正在努力。祝你好运
ps。我创建了一个似乎可行的小回调示例。如果有人在这里纠正我的错误并编辑这个例子,以便更好地为人们使用,我会感到非常高兴。所有我试图在这里做的是导航2页(由2类代表:介绍和Outro)
import pyjd from pyjamas.ui.VerticalPanel import VerticalPanel from pyjamas.ui.RootPanel import RootPanel from pyjamas.ui.SimplePanel import SimplePanel from pyjamas.ui.DockPanel import DockPanel from pyjamas.ui.Hyperlink import Hyperlink from pyjamas.ui.Button import Button from pyjamas.ui.HTML import HTML from pyjamas import Window class Site(SimplePanel): def onModuleLoad(self): SimplePanel.__init__(self) self.panel = DockPanel() self.intro = Intro() self.outro = Outro() self.index = HTML('index') self.curPage = self.index vp=VerticalPanel() vp.add(self.index) self.link1 = Hyperlink('menu item 1') self.link2 = Hyperlink('menu item 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 class Intro(SimplePanel): def __init__(self): SimplePanel.__init__(self) self.vp = VerticalPanel() self.html = HTML('This is intro') self.button = Button('click me', self) self.vp.add(self.html) self.vp.add(self.button) self.setWidget(self.vp) def onClick(self): Window.alert('onClick Intro') class Outro(SimplePanel): def __init__(self): SimplePanel.__init__(self) self.vp = VerticalPanel() self.html = HTML('This is outro') #we can do it this way self.button1 = Button('click me1', getattr(self, 'onBUTTON1')) self.button2 = Button('click me2') #or set up listener 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('hello from button1') def onBUTTON2(self): Window.alert('hello from button2') if __name__ == '__main__': pyjd.setup('./Site.html') app = Site() app.onModuleLoad() pyjd.run()