2014-03-27 39 views
0

这是最主要的指标类我的应用程序,它加载的各种类的DockPanel中的调用。我试图让按钮调用使用它的clicklistener(“OnClick”)的Timer函数。按钮加载下一屏幕,这是我希望能够控制加载下一个屏幕前显示的时间旋转器的图像(这是一个实验条件的一部分,我知道这是不是一个伟大的方式制造装载机)。问题是,按下按钮加载下一页,但它不激活这将导致页面被无限期显示的计时器。计时器不被按下按钮在pyjs

目前该定时器被加载到一个DockPanel中的南段,但我也试图简单地调用“onclick”事件的定时器功能。 (例如,“计时器(2000,self.OnTimer)”)

没有人有任何想法,为什么我的定时器不工作,如何解决这个问题?

编辑:我也试过把它放在Project类的init函数中,但是一旦应用程序加载就会启动Timer。所以在时间间隔之后,它只是加载目标页面而不用按下按钮。

class Project(SimplePanel): 
    def onModuleLoad(self): 
     SimplePanel.__init__(self) 

     self.panel= DockPanel() 
     self.horizontalslide=HorizontalSliderPage() 
     self.button=Button("CALCULATE") 
     self.horizontalslide.add(self.button) 
     self.button.addClickListener(getattr(self, "OnPress")) 
     self.recommendation=Details() 
     self.spinner=Spinner() 

     self.index=HTML("<h3>Welcome to this experiment.</h3>") 
     self.curPage=self.index 

     self.vp=VerticalPanel() 
     self.vp.add(self.index) 

     self.link1=Hyperlink("CONTINUE") 
     self.link1.addClickListener(getattr(self, 'ONLINK1')) 

     self.panel.add(self.link1, DockPanel.SOUTH) 

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

     RootPanel().add(self.panel) 


    def ONLINK1(self, sender): 
     self.panel.remove(self.curPage) 
     self.panel.remove(self.link1) 
     self.panel.add(self.horizontalslide, DockPanel.CENTER) 
     self.curPage=self.horizontalslide 

    def OnPress(self, sender): 
     self.panel.remove(self.curPage) 
     self.panel.add(self.spinner, DockPanel.CENTER) 
     self.curPage=self.spinner 
     return CalculatePercentage() 
     self.timer=Timer(2000, self.OnTimer) 
     self.panel.add(self.timer, DockPanel.SOUTH) 

    def OnTimer(self, target): 
     self.panel.remove(self.curPage) 
     self.panel.add(self.recommendation, DockPanel.CENTER) 
     self.curPage=self.recommendation 

回答

0

我找到了解决方案。似乎ClickListener中的返回与调用Timer有关。这是现在的样子:

def OnPress(self, sender): 
    self.panel.remove(self.curPage) 
    self.panel.add(self.spinner, DockPanel.CENTER) 
    self.curPage=self.spinner 
    Timer(5000, self.OnTimer) 
    return CalculatePercentage() 


def OnTimer(self, target): 
    self.panel.remove(self.curPage) 
    self.panel.add(self.recommendation, DockPanel.CENTER) 
    self.curPage=self.recommendation