# -*- 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_())