2016-04-11 2 views
1

Я пытаюсь разработать gui с PySide, и мне интересно, есть ли способ вызвать функцию в Python() и запустить ее в определенную дату и время?PySide, Qdate; запускать определенную функцию каждый день в определенное время

, например:

#run this function in everyday at 8:00 am. 
def print_something(): 
    print "Hello" 

ответ

0

Вот сценарий, заимствованный из главы 4 книги PyQt SUMMERFIELD, его alert.py пример. Он доступен бесплатно в Интернете здесь: http://www.informit.com/articles/article.aspx?p=1149122

В основном вы поставили цель QDateTime, а затем вы можете вызвать то, что вызываемая вы хотите, сравнивая цель currentQDateTime:

from PySide import QtCore, QtGui 
import sys 
import time 

#Prepare alarm 
alarmMessage = "Wake up, sleepyhead!" 
year = 2016 
month = 4 
day = 23 
hour = 12 
minute = 40  
alarmDateTime = QtCore.QDateTime(int(year), int(month), int(day), int(hour), int(minute), int(0)) 
#Wait for alarm to trigger at appropriate time (check every 5 seconds) 
while QtCore.QDateTime.currentDateTime() < alarmDateTime: 
    time.sleep(5) 

#Once alarm is triggered, create and show QLabel, and then exit application 
qtApp = QtGui.QApplication(sys.argv) 
label = QtGui.QLabel(alarmMessage) 
label.setStyleSheet("QLabel { color: rgb(255, 0, 0); font-weight: bold; font-size: 25px; \ 
        background-color: rgb(0,0,0); border: 5px solid rgba(0 , 255, 0, 200)}") 
label.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.WindowStaysOnTopHint) 
label.show() 
waitTime = 10000 #in milliseconds 
QtCore.QTimer.singleShot(waitTime, qtApp.quit) 
sys.exit(qtApp.exec_()) 

Это один имеет QLabel всплывал в то время, когда вы хотите, но это произвольно. Вы могли бы заставить его делать все, что захотите. Если вы хотите, чтобы он запускался каждый день в одно и то же время, вам нужно было бы соответствующим образом изменить его, но этого должно быть достаточно, чтобы вы начали использовать QDateTime для запуска событий.

Примечание, если вы работаете в Windows, и вы хотите, чтобы запустить его в фоновом режиме, без окна командной строки, показывая на экране, а затем следуйте советам здесь:

How can I hide the console window in a PyQt app running on Windows?

А именно, сохранить программу с удлинителем .pyw и убедитесь, что он работает с pythonw.exe, а не python.exe.