Вот сценарий, заимствованный из главы 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
.