Есть ли событие wxpython вроде program_start? - PullRequest
0 голосов
/ 10 августа 2010

ОК, я пытаюсь объяснить, чего я хочу достичь другим способом.Вот пример:

Скажите, если это антивирусная программа, и пользователь может выбрать один из двух способов запуска программы: первый, автоматический запуск сканирования дисков на наличие вирусов при запуске программы, второй вариант, нажмитекнопка запуска, чтобы программа проверяла диски на наличие вирусов после запуска программы в любое время, когда пользователь захочет.Итак, как новичок в wxpython, я знаю, как связать wx.EVT_BUTTON, чтобы сканирование началось после нажатия пользователем кнопки «Пуск», но я не знаю, как запустить сканирование после запуска программы.Интересно, есть ли событие program_start, которое я могу связать?Надеюсь, вы, ребята, можете мне помочь.Спасибо!

Ответы [ 3 ]

1 голос
/ 10 августа 2010

В wxPython вы можете переопределить метод OnInit вашего класса Application для запуска кода при запуске программы. Например:

  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. Это произойдет автоматически, если вы переопределите это.

1 голос
/ 10 августа 2010

Почему бы вам не запустить его только в коде модуля? Таким образом, он будет выполняться только один раз, потому что код в модуле запускается только один раз для экземпляра программы.

0 голосов
/ 10 августа 2010

В вашем init или методе OnInit выполните какую-либо проверку, чтобы увидеть, должна ли программа запускать процесс запуска при запуске (т.е. проверить файл конфигурации или что-то подобное).Если да, вызовите метод «scan» с помощью wx.CallAfter или wx.CallLater или вызовите его после того, как вы покажете () фрейм.

...