pyqt-sit-reminder/main/main.py

191 lines
7.9 KiB
Python
Raw Normal View History

2022-03-02 22:28:55 +08:00
# -*- 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.
2022-03-29 19:50:57 +08:00
import os
2022-03-02 22:28:55 +08:00
import notify2
import schedule
from PyQt5 import QtCore, QtGui, QtWidgets
2022-03-29 19:50:57 +08:00
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()
2022-03-02 22:28:55 +08:00
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")
2022-03-29 19:50:57 +08:00
self.gridLayout.addWidget(self.start, 10, 2, Qt.AlignCenter)
2022-03-02 22:28:55 +08:00
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):
2022-03-29 19:50:57 +08:00
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)
2022-03-02 22:28:55 +08:00
# import apprcc_rc
class Work(QThread):
signal = pyqtSignal()
def __init__(self):
super(Work, self).__init__()
def setTime(self, timeset):
2022-03-29 19:50:57 +08:00
print(True if timeset else False)
# print(timeset)
# print(type(timeset))
2022-03-02 22:28:55 +08:00
self.timeset = timeset
def job(self):
title = '休息助手 '
message = '该起来动一下了!'
# subprocess.Popen(['notify-send', title+message])
notify2.init(title)
2022-03-29 19:50:57 +08:00
n = notify2.Notification(title, message, os.getcwd() + '/images/stand.svg')
2022-03-02 22:28:55 +08:00
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)
2022-03-29 19:50:57 +08:00
2022-03-02 22:28:55 +08:00
import sys
if __name__ == '__main__':
app = QApplication(sys.argv)
2022-03-29 19:50:57 +08:00
app.setWindowIcon(QIcon(os.getcwd() + '/images/stand.svg'))
2022-03-02 22:28:55 +08:00
main = QMainWindow()
ui = Ui_MainWindow()
2022-03-29 19:50:57 +08:00
w = QWidget()
trayIcon = SystemTrayIcon(QtGui.QIcon(os.getcwd() + '/images/stand.svg'), w)
trayIcon.show()
2022-03-02 22:28:55 +08:00
ui.setupUi(main)
2022-03-29 19:50:57 +08:00
style_sheet = QSSLoader.QSSLoader.read_qss_file(os.getcwd() + '/resource/current.qss')
main.setStyleSheet(style_sheet)
2022-03-02 22:28:55 +08:00
main.show()
sys.exit(app.exec_())