美文网首页程序员
快瞎了,我用Python保护我的眼睛

快瞎了,我用Python保护我的眼睛

作者: Negen | 来源:发表于2019-02-28 15:57 被阅读0次

    背景

    最近看上班看电脑感觉越来越费劲,眼睛越来越不舒服,偶尔还会有几滴眼泪出来,这时我终于意识到了一定是用眼过度,平均每天不低于八小时盯着屏幕,眼睛没有得到适当的休息,所以才会导致眼睛越来越酸痛。于是,我花了半天的时间,用 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!!!!!!

    相关文章

      网友评论

        本文标题:快瞎了,我用Python保护我的眼睛

        本文链接:https://www.haomeiwen.com/subject/dptkuqtx.html