pyqt-sit-reminder/main/main.py
2022-03-29 19:50:57 +08:00

190 lines
7.9 KiB
Python

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'sit_reminder.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
import os
import notify2
import schedule
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QSystemTrayIcon, QWidget, QMenu
from PyQt5.QtGui import QIntValidator, QIcon, QPixmap
from PyQt5.QtCore import QThread, pyqtSignal, Qt
from tool import QSSLoader
class SystemTrayIcon(QSystemTrayIcon):
def __init__(self, icon, parent=None):
QSystemTrayIcon.__init__(self, icon, parent)
menu = QMenu(parent)
showAction = menu.addAction("显示")
exitAction = menu.addAction("退出")
self.setContextMenu(menu)
exitAction.triggered.connect( self.exit)
showAction.triggered.connect(self.showApp)
def showApp(self):
main = QMainWindow()
style_sheet = QSSLoader.QSSLoader.read_qss_file(os.getcwd() + '/resource/current.qss')
main.setStyleSheet(style_sheet)
main.show()
def exit(self):
QtCore.QCoreApplication.exit()
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(344, 400)
MainWindow.setMinimumSize(QtCore.QSize(344, 400))
MainWindow.setMaximumSize(QtCore.QSize(344, 400))
MainWindow.setIconSize(QtCore.QSize(64, 64))
self.centralwidget = QtWidgets.QWidget(MainWindow)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
self.centralwidget.setSizePolicy(sizePolicy)
self.centralwidget.setMaximumSize(QtCore.QSize(600, 400))
self.centralwidget.setAutoFillBackground(False)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.start = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.start.sizePolicy().hasHeightForWidth())
self.start.setSizePolicy(sizePolicy)
self.start.setIconSize(QtCore.QSize(32, 32))
self.start.setAutoExclusive(False)
self.start.setObjectName("start")
self.gridLayout.addWidget(self.start, 10, 2, Qt.AlignCenter)
self.thirty = QtWidgets.QPushButton(self.centralwidget)
self.thirty.setObjectName("thirty")
self.gridLayout.addWidget(self.thirty, 5, 0, 1, 1)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem, 11, 2, 1, 1)
self.sixty = QtWidgets.QPushButton(self.centralwidget)
self.sixty.setObjectName("sixty")
self.gridLayout.addWidget(self.sixty, 5, 4, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem1, 4, 2, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem2, 2, 2, 1, 1)
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem3, 6, 2, 1, 1)
self.time = QtWidgets.QLineEdit(self.centralwidget)
self.time.setAlignment(QtCore.Qt.AlignCenter)
self.time.setObjectName("time")
self.gridLayout.addWidget(self.time, 7, 2, 1, 1)
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem4, 0, 2, 1, 1)
spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem5, 1, 0, 1, 1)
self.selectTime = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setPointSize(25)
self.selectTime.setFont(font)
self.selectTime.setAlignment(QtCore.Qt.AlignCenter)
self.selectTime.setObjectName("selectTime")
self.gridLayout.addWidget(self.selectTime, 1, 1, 1, 3)
spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem6, 1, 4, 1, 1)
self.ten = QtWidgets.QPushButton(self.centralwidget)
self.ten.setObjectName("ten")
self.gridLayout.addWidget(self.ten, 3, 4, 1, 1)
self.one = QtWidgets.QPushButton(self.centralwidget)
self.one.setObjectName("one")
self.gridLayout.addWidget(self.one, 3, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.one.clicked.connect(lambda: self.setTime('1'))
self.ten.clicked.connect(lambda: self.setTime('10'))
self.thirty.clicked.connect(lambda: self.setTime('30'))
self.sixty.clicked.connect(lambda: self.setTime('60'))
# 限制输入范围为 1,240
self.time.setPlaceholderText('请输入整数')
val = QIntValidator()
val.setRange(1, 240)
self.time.setValidator(val)
self.start.clicked.connect(self.startBtn)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "提醒小助手"))
self.start.setText(_translate("MainWindow", "开始"))
self.thirty.setText(_translate("MainWindow", "30分"))
self.sixty.setText(_translate("MainWindow", "60分"))
self.selectTime.setText(_translate("MainWindow", "选择时长"))
self.ten.setText(_translate("MainWindow", "10分"))
self.one.setText(_translate("MainWindow", "1分"))
def setTime(self, text):
self.time.setText(text)
def startBtn(self):
try:
if self.time.text() and int(self.time.text()) > 0:
self.thread = Work()
self.thread.setTime(self.time.text())
self.thread.start()
except Exception as e:
print(e)
# import apprcc_rc
class Work(QThread):
signal = pyqtSignal()
def __init__(self):
super(Work, self).__init__()
def setTime(self, timeset):
print(True if timeset else False)
# print(timeset)
# print(type(timeset))
self.timeset = timeset
def job(self):
title = '休息助手 '
message = '该起来动一下了!'
# subprocess.Popen(['notify-send', title+message])
notify2.init(title)
n = notify2.Notification(title, message, os.getcwd() + '/images/stand.svg')
n.show()
def run(self):
self.timeset = int(self.timeset)
schedule.every(self.timeset).minutes.do(self.job)
while True:
schedule.run_pending()
QThread.sleep(1)
import sys
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setWindowIcon(QIcon(os.getcwd() + '/images/stand.svg'))
main = QMainWindow()
ui = Ui_MainWindow()
w = QWidget()
trayIcon = SystemTrayIcon(QtGui.QIcon(os.getcwd() + '/images/stand.svg'), w)
trayIcon.show()
ui.setupUi(main)
style_sheet = QSSLoader.QSSLoader.read_qss_file(os.getcwd() + '/resource/current.qss')
main.setStyleSheet(style_sheet)
main.show()
sys.exit(app.exec_())