代码之家  ›  专栏  ›  技术社区  ›  Shane

是否有wxpython事件,如程序启动?

  •  0
  • Shane  · 技术社区  · 14 年前

    好吧,我试着用另一种方式解释我想要达到的目标。下面是一个例子:

    假设它是一个反病毒程序,并且用户可以选择两种运行程序的方式,第一种,当程序启动时自动开始扫描磁盘以查找病毒,第二种,在用户希望的任何时间启动程序后,点击开始按钮使程序扫描磁盘以查找病毒。所以,作为一个wxpython初学者,我知道如何绑定wx.evt_按钮,让用户点击开始按钮后开始扫描,但我不知道如何在程序启动后启动扫描。我想知道是否有一个程序启动事件我可以绑定?希望你们能帮助我。谢谢!

    3 回复  |  直到 14 年前
        1
  •  1
  •   g.d.d.c    14 年前

    在wxpython中,可以重写应用程序类的OnInit方法,以便在程序启动时运行代码。例如:

      def OnInit(self):
        # Check for a running instance for this user.  Do not instantiate if found.
        if self.checkInstance():
          dbcon.cursor().callproc('post_mutex', (self.mutexname,))
          dbcon.commit()
          self.Cleanup()
          return False
    
        # Register for database events.
        DataCache['dbListener'] = dbListener()
    
        return True
    

    当然,我的应用程序类中还有一个名为checkInstance的方法。根据它的返回值,我的应用程序或者启动,或者触发另一个正在运行的实例来启动。

    在wxpython中,您不必对应用程序类做任何特殊的事情,就可以为OnInit方法进行绑定。如果您覆盖它,它将自动发生。

        2
  •  1
  •   gruszczy    14 年前

    为什么不直接用模块代码运行它呢?这样,它将只运行一次,因为模块中的代码在每个程序实例中只运行一次。

        3
  •  0
  •   Mike Driscoll    14 年前

    在你 初始化 或者在init方法中,进行某种检查,看看程序是否应该在启动时运行启动过程(例如,检查配置文件或类似文件)。如果是,请使用wx.callAfter或wx.callLater调用“scan”方法,或者在显示()帧后调用该方法。