0
0 комментариев

Добрый день. Есть программа написанная на python3 с графическим интерфейсом PyQt5. В ней много разных модулей и функций. И пока что всё выполняется в одном потоке, т.е. без субпроцессов и мультипроцессинга. В программе есть запускающий модуль:

if __name__ == '__main__':
    Base.start_base()
    app = QApplication(sys.argv)
    form = Ui_Form()
    Ui_Form.user_pass(form)
    form.show()
    sys.exit(app.exec_())

и потом, уже в самой программе есть (насколько я понимаю) кусок (модуль def retranslateUi(self, Form): ), где программа крутится по кругу и ожидает нажания клавиш в граф.интерфейсе:

        self.Begin.clicked.connect(self.choice)
        self.Clr_mes.clicked.connect(self.clear)
        self.radio_print_user_base.clicked.connect(self.print_userbase)
        self.Foto_Rate.clicked.connect(self.download_fotorating)
        self.Fotorate_folder_btn.clicked.connect(self.fotorate_folder)

Мне так кажется, что она тут крутится, как на самом деле она выхватывает эти нажатия — мне неизвестно.

Собственно, вопрос: как добавить в програму таймер, который будет следить за временем, и, скажем, каждые 10 минут будет запускать один из модулей программы (иммитировать нажатие клавиши в граф.интерфейсе, которая запускает нужный модуль)? Уточню: прикрутить клавишу, запустить модуль, иммитировать нажатие — я могу. Я не понимаю, как запустить таймер и куда его вписать, который будет работать ОДНОВРЕМЕННО с программой, вне зависимости, чем она в данный момент занимается и что там нажато.

P.S. Пробовал баловаться с модулем multiprocessing, помещая разбивку на процессы под if __name__ == '__main__': , но одновременности не получилось, процессы все равно выполнялись по очереди, и один из них надолго зависал (например, прорисовка интерфейса просто зависала и было белое пустое окно), ожидая, пока закончит работу другой. Возможно, просто криво делал.


Добавить комментарий