背景
最近看上班看电脑感觉越来越费劲, 眼睛越来越不舒服, 偶尔还会有几滴眼泪出来, 这时我终于意识到了一定是用眼过度, 平均每天不低于八小时盯着屏幕, 眼睛没有得到适当的休息, 所以才会导致眼睛越来越酸痛. 于是, 我花了半天的时间, 用 PyQt5 从零开始做了这个护眼小助手.
主要功能
1, 强制自己适当休息, 保护眼睛
2, 强制自己适当休息, 保护眼睛
3, 强制自己适当休息, 保护眼睛
重要的事情说三遍!!!!!!
运行截图
1, 主界面
主界面. PNG
2, 运行中界面
运行中界面. PNG
3, 休息时界面 (占据 90% 屏幕, 始终至于顶层, 强制你不能使用电脑, 当然你要强制回到桌面那.......)
休息时界面. PNG
代码送上 (低质量代码, 不喜轻喷 0.0)
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- '''
- @Time : 2019/2/28 14:02
- @Author : Negen
- @Site :
- @File : RestAssistantApp.py
- @Software: PyCharm
- '''
- import sys
- from PyQt5.QtCore import *
- from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication, QLabel, QLineEdit, QMessageBox
- from PyQt5 import QtCore
- from PyQt5.QtGui import QFont, QColor, QPalette
- class MainFrame(QMainWindow):
- def __init__(self):
- super().__init__()
- self.initUI()
- def initUI(self):
- self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint|QtCore.Qt.WindowMinimizeButtonHint)
- font = QFont()
- font.setPointSize(16)
- self.timeLabel = QLabel(self)
- self.timeLabel.setFont(font)
- self.timeLabel.resize(300, 30)
- timer = QTimer(self)
- timer.timeout.connect(self.showtime)
- timer.start()
- self.label = QLabel("输入休息间隔时长 (M)", self)
- self.label.setFont(font)
- self.label.move(50, 50)
- self.label.resize(250, 30)
- self.edit = QLineEdit(self)
- self.edit.setFont(font)
- self.edit.move(125, 95)
- self.edit.resize(50, 30)
- self.btn = QPushButton("确认", self)
- self.btn.resize(150, 30)
- self.btn.move(75, 150)
- self.resize(300, 200)
- self.setWindowTitle('护眼助手')
- self.show()
- """
- 实时显示时间
- """
- def showtime(self):
- datetime = QDateTime.currentDateTime()
- timeText = datetime.toString()
- self.timeLabel.setText(" " + timeText)
- def clickHandel(self):
- try:
- minutes = int(self.edit.text())
- self.close()
- self.littleFrame = LittleFrame(minutes)
- self.littleFrame.show()
- except Exception as e:
- QMessageBox.information(self, "提示", "请输入整数")
- class LittleFrame(QMainWindow):
- def __init__(self,minutes):
- super().__init__()
- self.initUI()
- self.minutes = minutes
- self.second = minutes * 60
- def initUI(self):
- self.desktop = QApplication.desktop()
- # 获取显示器分辨率大小
- self.screenRect = self.desktop.screenGeometry()
- self.height = self.screenRect.height()
- self.width = self.screenRect.width()
- self.setGeometry(self.width*0.85, self.height*0.8, 250, 80)
- # self.setFixedSize(self.width*0.9, self.height*0.9)
- #禁用最大化按钮 #置顶
- self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint|QtCore.Qt.WindowStaysOnTopHint)
- self.setWindowTitle('护眼助手运行中...')
- font = QFont()
- font.setPointSize(16)
- self.timeLabel = QLabel(self)
- self.timeLabel.setFont(font)
- self.timeLabel.move(40,15)
- self.timeLabel.resize(250,50)
- self.timer = QTimer(self)
- self.timer.setInterval(1000)
- self.timer.timeout.connect(self.showtime)
- self.timer.start()
- """
- 实时显示时间
- """
- def showtime(self):
- if self.second == 0:
- self.close()
- self.restFrame = RestFrame()
- self.restFrame.setStyleSheet("#MainWindow{background-color: yellow}")
- self.restFrame.show()
- self.timeLabel.setText(str(self.second).zfill(2) + "秒后休息哦")
- self.second -= 1
- class RestFrame(QMainWindow):
- def __init__(self):
- super().__init__()
- self.initUI()
- def initUI(self):
- self.desktop = QApplication.desktop()
- # 获取显示器分辨率大小
- self.screenRect = self.desktop.screenGeometry()
- self.height = self.screenRect.height()
- self.width = self.screenRect.width()
- self.setGeometry(self.width*0.05, self.height*0.05, self.width*0.9, self.height*0.9)
- # self.setFixedSize(self.width*0.9, self.height*0.9)
- #禁用最大化按钮 #置顶
- self.setWindowFlags(QtCore.Qt.FramelessWindowHint|QtCore.Qt.WindowMinimizeButtonHint|QtCore.Qt.WindowStaysOnTopHint)
- self.setStyleSheet("#MainWindow{background-color: yellow}")
- font = QFont()
- font.setPointSize(80)
- self.titleLabel = QLabel(self)
- self.titleLabel.setText("休息中哦...")
- self.titleLabel.resize(self.width,self.height/2)
- self.titleLabel.move(self.width*0.3, self.height*0.3)
- self.titleLabel.setFont(font)
- self.setWindowTitle('休息中...')
- if __name__ == '__main__':
- App = QApplication(sys.argv)
- a = MainFrame()
- a.show()
- a.btn.clicked.connect(a.clickHandel)
- sys.exit(App.exec_())
结束语
写的比较 low, 毕竟第一次接触 pyqt5 (不是我找借口, 展示), 如果有什么更好的想法, 建议. 请各位一定不要吝啬, 大方的提出来 (这样才能体现您的大气).
thanks!!!!!!
来源: http://www.jianshu.com/p/abcffed55eae