Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- # Form implementation generated from reading ui file 'QAlarmUI.ui'
- #
- # Created by: PyQt5 UI code generator 5.13.1
- #
- # WARNING! All changes made in this file will be lost!
- import time
- import datetime
- import threading
- from multiprocessing import Process
- from playsound import playsound
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PyQt5.QtWidgets import QMessageBox
- class Vector3:
- def __init__(self, x, y, z):
- self.x = x
- self.y = y
- self.z = z
- class Clock():
- def __init__(self, v1 = 0, v2 = 0, v3 = 0):
- self.hour = v1
- self.minute = v2
- self.second = v3
- self.startLoop()
- def reset(self):
- self.second = 0
- self.minute = 0
- self.hour = 0
- def set(self, v1, v2, v3):
- self.hour = v1
- self.minute = v2
- self.second = v3
- def setHour(self, v1):
- self.hour = v1
- def setMinute(self, v1):
- self.minute = v1
- def setSecond(self, v1):
- self.second = v1
- def startLoop(self):
- t1 = threading.Thread(target=self.lLogic);
- t1.start()
- def lLogic(self):
- while True:
- time.sleep(0.1)
- currTime = datetime.datetime.now()
- self.second = currTime.second
- self.minute = currTime.minute
- self.hour = currTime.hour
- class Alarm(Clock):
- def __init__(self, v1 = 0, v2 = 0, v3 = 0):
- self.hour = v1
- self.minute = v2
- self.second = v3
- self.isAlarmOn = 0
- self.listAlarms = []
- self.startLoop()
- def addAlarm(self, v1, v2, v3):
- self.listAlarms.append(Vector3(int(v1), int(v2), int(v3)))
- def removeAlarm(self, v1 , v2, v3):
- for i in range (len(self.listAlarms)):
- if int(v1) == self.listAlarms[i].x and int(v2) == self.listAlarms[i].y and int(v3) == self.listAlarms[i].z:
- self.listAlarms.pop(i)
- def startLoop(self):
- t1 = threading.Thread(target=self.lLogic);
- t2 = threading.Thread(target=self.lCheck);
- t1.start()
- t2.start()
- def lCheck(self):
- while True:
- for i in range (len(self.listAlarms)):
- if self.hour == self.listAlarms[i].x and self.minute == self.listAlarms[i].y and self.second == self.listAlarms[i].z:
- self.isAlarmOn = 1
- time.sleep(1)
- class Ui_MainWindow(object):
- def setupUi(self, MainWindow):
- MainWindow.setObjectName("MainWindow")
- MainWindow.resize(395, 300)
- self.centralwidget = QtWidgets.QWidget(MainWindow)
- self.centralwidget.setObjectName("centralwidget")
- self.bAdd = QtWidgets.QPushButton(self.centralwidget)
- self.bAdd.setGeometry(QtCore.QRect(10, 250, 185, 25))
- self.bAdd.setObjectName("bAdd")
- self.bDelete = QtWidgets.QPushButton(self.centralwidget)
- self.bDelete.setGeometry(QtCore.QRect(200, 250, 185, 25))
- self.bDelete.setObjectName("bDelete")
- self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
- self.lineEdit.setGeometry(QtCore.QRect(10, 220, 185, 21))
- self.lineEdit.setObjectName("lineEdit")
- self.listWidget = QtWidgets.QListWidget(self.centralwidget)
- self.listWidget.setGeometry(QtCore.QRect(10, 11, 375, 201))
- self.listWidget.setObjectName("listWidget")
- MainWindow.setCentralWidget(self.centralwidget)
- self.statusbar = QtWidgets.QStatusBar(MainWindow)
- self.statusbar.setObjectName("statusbar")
- MainWindow.setStatusBar(self.statusbar)
- currTime = datetime.datetime.now()
- self.Wecker = Alarm(currTime.hour, currTime.minute, currTime.second)
- self.bAdd.clicked.connect(self.addAlarm)
- self.bDelete.clicked.connect(self.deleteAlarm)
- t1 = threading.Thread(target=self.checkAlarm);
- t1.start()
- self.retranslateUi(MainWindow)
- QtCore.QMetaObject.connectSlotsByName(MainWindow)
- def retranslateUi(self, MainWindow):
- _translate = QtCore.QCoreApplication.translate
- MainWindow.setWindowTitle(_translate("MainWindow", "QAlarm"))
- self.bAdd.setText(_translate("MainWindow", "Add Alarm"))
- self.bDelete.setText(_translate("MainWindow", "Delete Alarm"))
- def addAlarm(self):
- self.listWidget.addItem(self.lineEdit.text())
- newLine = self.lineEdit.text()
- splitted = newLine.split(":")
- self.Wecker.addAlarm(splitted[0], splitted[1], splitted[2])
- def deleteAlarm(self):
- toDel = self.listWidget.currentItem().text()
- try:
- splitted = toDel.split(":")
- self.Wecker.removeAlarm(splitted[0], splitted[1], splitted[2])
- except:
- pass
- listItems=self.listWidget.selectedItems()
- if not listItems: return
- for item in listItems:
- self.listWidget.takeItem(self.listWidget.row(item))
- def checkAlarm(self):
- while True:
- time.sleep(0.5)
- if self.Wecker.isAlarmOn == True:
- t1 = Process(target=self.playSound)
- t1.start()
- mBox = QMessageBox()
- mBox.setWindowTitle("Alarm went off")
- mBox.setText("Click Ok to turn off")
- m = mBox.exec_()
- t1.terminate()
- self.Wecker.isAlarmOn = 0
- def playSound(self):
- playsound("alarmsound.mp3")
- if __name__ == "__main__":
- import sys
- app = QtWidgets.QApplication(sys.argv)
- MainWindow = QtWidgets.QMainWindow()
- ui = Ui_MainWindow()
- ui.setupUi(MainWindow)
- MainWindow.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement