有没有像program_start这样的wxpython事件?

时间:2010-08-10 15:19:29

标签: python event-handling wxpython

好的,我正在尝试以另一种方式解释我想要实现的目标。这是一个例子:

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

在wxPython中,您可以覆盖Application类的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

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

在wxPython中,您不必对App类执行任何特殊操作来获取OnInit方法的绑定。如果你覆盖它,它会自动发生。

答案 2 :(得分:0)

init 或OnInit方法中,进行某种检查以查看程序是否应该在启动时运行启动过程(即检查配置文件或其他类似文件)。如果是,请使用wx.CallAfter或wx.CallLater调用“scan”方法,或者在Show()框架后调用它。