0

これは、DockPanel にさまざまなクラスをロードするアプリケーションのメイン インデックス クラスです。clicklistener(「OnClick」)を使用して、ボタンにTimer関数を呼び出させようとしています。ボタンは次の画面をロードします。これは、次の画面をロードする前に表示される時間を制御できるようにしたいスピナーの画像です (これは実験条件の一部です。これは素晴らしい方法ではないことを認識しています)ローダーを作成します)。問題は、ボタンを押すと次のページが読み込まれることですが、タイマーがアクティブにならないため、ページが無期限に表示されます。

現在、Timer は DockPanel の SOUTH セクションにロードされていますが、「OnClick」で単に Timer 関数を呼び出してみました。(例:「Timer(2000, self.OnTimer)」)

タイマーが機能しない理由と、これを解決する方法を知っている人はいますか?

編集: Project クラスのinit関数にも入れようとしましたが、アプリが読み込まれるとすぐにタイマーが起動します。したがって、時間間隔の後、ボタンを押すことなくターゲットページをロードするだけです。

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
4

1 に答える 1