在pyjs中按下按钮不会调用计时器

时间:2014-03-27 13:25:25

标签: python pyjamas

这是我的应用程序的主索引类,它在DockPanel中加载各种类。我试图让按钮调用一个Timer函数使用它clicklistener(“OnClick”)。按钮加载下一个屏幕,这是一个微调器的图像,我希望能够控制它在加载下一个屏幕之前显示多长时间(这是实验条件的一部分,我意识到这不是一个好方法制作装载机)。问题是按下按钮会加载下一页,但它不会激活定时器,导致页面无限期显示。

目前正在将Timer加载到DockPanel的SOUTH部分,但我也尝试在“OnClick”中调用Timer函数。 (例如“Timer(2000,self.OnTimer)”)

有谁知道为什么我的Timer不工作以及如何解决这个问题?

编辑:我也尝试将它放在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

1 个答案:

答案 0 :(得分: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