Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.01 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. # Form implementation generated from reading ui file 'QAlarmUI.ui'
  4. #
  5. # Created by: PyQt5 UI code generator 5.13.1
  6. #
  7. # WARNING! All changes made in this file will be lost!
  8.  
  9.  
  10. import time
  11. import datetime
  12. import threading
  13. from multiprocessing import Process
  14. from playsound import playsound
  15. from PyQt5 import QtCore, QtGui, QtWidgets
  16. from PyQt5.QtWidgets import QMessageBox
  17.  
  18.  
  19. class Vector3:
  20.   def __init__(self, x, y, z):
  21.     self.x = x
  22.     self.y = y
  23.     self.z = z
  24.  
  25.  
  26. class Clock():
  27.     def __init__(self, v1 = 0, v2 = 0, v3 = 0):
  28.         self.hour = v1
  29.         self.minute = v2
  30.         self.second = v3
  31.  
  32.         self.startLoop()
  33.        
  34.     def reset(self):
  35.         self.second = 0
  36.         self.minute = 0
  37.         self.hour = 0  
  38.  
  39.     def set(self, v1, v2, v3):
  40.         self.hour = v1
  41.         self.minute = v2
  42.         self.second = v3
  43.        
  44.     def setHour(self, v1):
  45.         self.hour = v1
  46.        
  47.     def setMinute(self, v1):
  48.         self.minute = v1
  49.        
  50.     def setSecond(self, v1):
  51.         self.second = v1            
  52.        
  53.      
  54.     def startLoop(self):
  55.         t1 = threading.Thread(target=self.lLogic);
  56.         t1.start()      
  57.            
  58.     def lLogic(self):
  59.         while True:
  60.             time.sleep(0.1)
  61.            
  62.             currTime = datetime.datetime.now()
  63.             self.second = currTime.second
  64.             self.minute = currTime.minute
  65.             self.hour = currTime.hour
  66.        
  67.                        
  68. class Alarm(Clock):
  69.     def __init__(self, v1 = 0, v2 = 0, v3 = 0):
  70.         self.hour = v1
  71.         self.minute = v2
  72.         self.second = v3
  73.         self.isAlarmOn = 0
  74.  
  75.         self.listAlarms = []
  76.        
  77.         self.startLoop()
  78.    
  79.    
  80.     def addAlarm(self, v1, v2, v3):
  81.         self.listAlarms.append(Vector3(int(v1), int(v2), int(v3)))
  82.    
  83.     def removeAlarm(self, v1 , v2, v3):
  84.         for i in range (len(self.listAlarms)):
  85.             if int(v1) == self.listAlarms[i].x and int(v2) == self.listAlarms[i].y and int(v3) == self.listAlarms[i].z:
  86.                 self.listAlarms.pop(i)
  87.  
  88.     def startLoop(self):
  89.         t1 = threading.Thread(target=self.lLogic);
  90.         t2 = threading.Thread(target=self.lCheck);
  91.        
  92.         t1.start()
  93.         t2.start()
  94.        
  95.     def lCheck(self):
  96.         while True:
  97.             for i in range (len(self.listAlarms)):              
  98.                 if self.hour == self.listAlarms[i].x and self.minute == self.listAlarms[i].y and self.second == self.listAlarms[i].z:
  99.                     self.isAlarmOn = 1    
  100.             time.sleep(1)
  101.                                    
  102.  
  103. class Ui_MainWindow(object):
  104.     def setupUi(self, MainWindow):
  105.         MainWindow.setObjectName("MainWindow")
  106.         MainWindow.resize(395, 300)
  107.         self.centralwidget = QtWidgets.QWidget(MainWindow)
  108.         self.centralwidget.setObjectName("centralwidget")
  109.         self.bAdd = QtWidgets.QPushButton(self.centralwidget)
  110.         self.bAdd.setGeometry(QtCore.QRect(10, 250, 185, 25))
  111.         self.bAdd.setObjectName("bAdd")
  112.         self.bDelete = QtWidgets.QPushButton(self.centralwidget)
  113.         self.bDelete.setGeometry(QtCore.QRect(200, 250, 185, 25))
  114.         self.bDelete.setObjectName("bDelete")
  115.         self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
  116.         self.lineEdit.setGeometry(QtCore.QRect(10, 220, 185, 21))
  117.         self.lineEdit.setObjectName("lineEdit")
  118.         self.listWidget = QtWidgets.QListWidget(self.centralwidget)
  119.         self.listWidget.setGeometry(QtCore.QRect(10, 11, 375, 201))
  120.         self.listWidget.setObjectName("listWidget")
  121.         MainWindow.setCentralWidget(self.centralwidget)
  122.         self.statusbar = QtWidgets.QStatusBar(MainWindow)
  123.         self.statusbar.setObjectName("statusbar")
  124.         MainWindow.setStatusBar(self.statusbar)
  125.  
  126.  
  127.         currTime = datetime.datetime.now()
  128.         self.Wecker = Alarm(currTime.hour, currTime.minute, currTime.second)
  129.         self.bAdd.clicked.connect(self.addAlarm)
  130.         self.bDelete.clicked.connect(self.deleteAlarm)
  131.         t1 = threading.Thread(target=self.checkAlarm);
  132.         t1.start()
  133.        
  134.         self.retranslateUi(MainWindow)
  135.         QtCore.QMetaObject.connectSlotsByName(MainWindow)
  136.  
  137.     def retranslateUi(self, MainWindow):
  138.         _translate = QtCore.QCoreApplication.translate
  139.         MainWindow.setWindowTitle(_translate("MainWindow", "QAlarm"))
  140.         self.bAdd.setText(_translate("MainWindow", "Add Alarm"))
  141.         self.bDelete.setText(_translate("MainWindow", "Delete Alarm"))
  142.  
  143.     def addAlarm(self):
  144.         self.listWidget.addItem(self.lineEdit.text())
  145.         newLine = self.lineEdit.text()
  146.         splitted = newLine.split(":")
  147.         self.Wecker.addAlarm(splitted[0], splitted[1], splitted[2])
  148.    
  149.     def deleteAlarm(self):
  150.         toDel = self.listWidget.currentItem().text()
  151.         try:
  152.             splitted = toDel.split(":")
  153.             self.Wecker.removeAlarm(splitted[0], splitted[1], splitted[2])
  154.         except:
  155.             pass
  156.            
  157.        
  158.         listItems=self.listWidget.selectedItems()
  159.         if not listItems: return        
  160.         for item in listItems:
  161.             self.listWidget.takeItem(self.listWidget.row(item))
  162.        
  163.     def checkAlarm(self):
  164.         while True:
  165.             time.sleep(0.5)
  166.             if self.Wecker.isAlarmOn == True:
  167.                 t1 = Process(target=self.playSound)
  168.                 t1.start()
  169.                    
  170.                 mBox = QMessageBox()
  171.                 mBox.setWindowTitle("Alarm went off")
  172.                 mBox.setText("Click Ok to turn off")
  173.                 m = mBox.exec_()
  174.  
  175.                 t1.terminate()
  176.  
  177.                 self.Wecker.isAlarmOn = 0
  178.                
  179.            
  180.     def playSound(self):
  181.         playsound("alarmsound.mp3")
  182.  
  183. if __name__ == "__main__":
  184.     import sys
  185.     app = QtWidgets.QApplication(sys.argv)
  186.     MainWindow = QtWidgets.QMainWindow()
  187.     ui = Ui_MainWindow()
  188.     ui.setupUi(MainWindow)
  189.     MainWindow.show()
  190.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement