基于PyQT5制作一个桌面摸鱼工具
目录
- 前言
- 按键功能控制
- 主要功能
- 核心代码
前言 现在我能一整天都严肃地盯着屏幕,看起来就像在很认真地工作,
利用摸鱼,打开小说,可实行完美摸鱼,实时保存进度
用PYQT5 Mock一个摸鱼软件 类似于Thief
按键功能控制 q 退出
B 书签功能
F 增加字体大小
Shift F 减小字体
O 打开文件,现在仅仅支持 utf8格式的txt文件
主要功能 FlameLess Window 无边框窗口
一键快速退出
ini 文件读写
右键上下文菜单
核心代码 pyqt 实现功能还是比较顺畅的,总体功能实现代码量不到200行
from PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import Qtimport sys,osimport configparser# Q to quit app# B Bookmark # F increase Font size # Shift F decrease Font size# O Open *.txt fileclass FisherReader(QMainWindow): def __init__(self):super().__init__()# dragself.pos =[0,0]self.mouse_down = Falseself.down = [0,0]self.prev = [0,0]# textself.txtName = ''self.text = []self.index = 0# styleself.show_info = Falseself.font_size = 8self.bgColor = QColor(255,255,255)self.defPalette()# self.read_Txt() def mousePressEvent(self, event):current = [event.pos().x(),event.pos().y()]self.down = currentself.mouse_down = True def mouseMoveEvent(self,event):current = [event.pos().x(),event.pos().y()]if self.mouse_down:delta = [current[0]-self.down[0],current[1]-self.down[1]]new = [self.pos[0]+delta[0],self.pos[1]+delta[1]]self.move(new[0],new[1])self.pos = new# print(self.pos)self.prev = current def mouseReleaseEvent(self, event):self.mouse_down = False def keyPressEvent(self,event):if event.key() == Qt.Key_Q:app.quit()if event.key() == Qt.Key_Down:if self.index < len(self.text)-1:self.index = self.index+1self.update()if event.key() == Qt.Key_Up:if self.index > 0:self.index = self.index-1self.update()if event.key() == Qt.Key_F:if event.modifiers() & QtCore.Qt.ShiftModifier and self.font_size >2:self.font_size -= 2else:self.font_size += 2self.update()if event.key() == Qt.Key_I:self.show_info = not self.show_infoself.update()if event.key() == Qt.Key_O:self.open()self.update()if event.key() == Qt.Key_B:self.addBookmark()if event.key() == Qt.Key_R:self.getBookmark() def defPalette(self):p = self.palette()p.setColor(QPalette.Background,self.bgColor)self.window().setPalette(p) def paintEvent(self,event):painter = QPainter(self)painter.setRenderHints(QPainter.Antialiasing)if len(self.text)>0:painter.setFont(QFont('SimSun',self.font_size))painter.drawText(QtCore.QRectF(10,10,600,50),Qt.AlignLeft,self.text[self.index])if self.show_info:painter.drawText(QtCore.QRectF(610,10,50,50),Qt.AlignLeft,"{}/{}".format(self.index+1,len(self.text))) def open(self):path, _ = QFileDialog.getOpenFileName(self, "打开文件",os.getcwd(), "Text files (*.txt)")if path:self.txtName = pathself.read_Txt_smart(path)self.update() def read_Txt(self,file):with open(file,'r',encoding="UTF-8") as f:self.text = f.readlines() def cut(self,text,length):return [text[i:i+length] for i in range(0,len(text),length)] def wheelEvent(self, e):if e.angleDelta().y() < 0:if self.index < len(self.text)-1:self.index = self.index+1elif e.angleDelta().y() > 0:if self.index > 0:self.index = self.index-1self.update() def addBookmark(self):config = configparser.ConfigParser()path = "bookmark.ini"config.add_section('bookmark')config.set('bookmark','path',self.txtName)config.set('bookmark','bookmark',str(self.index))config.write(open(path,'w')) def getBookmark(self):config = configparser.ConfigParser()path = "bookmark.ini"config.read(path)if config.has_option('bookmark','path'):self.txtName = config.get('bookmark','path')self.index = int(config.get('bookmark','bookmark'))self.read_Txt_smart(self.txtName); self.update() def read_Txt_smart(self,file):with open(file,'r',encoding="UTF-8") as f:text_buffer = []lines = f.readlines()for line in lines:cline = self.cut(line,30)for cl in cline:if len(cl)>1:text_buffer.append(cl)self.text = text_bufferif __name__ == '__main__': app = QApplication(sys.argv) fisher = FisherReader() fisher.resize(660,45) fisher.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint) fisher.show() fisher.setWindowTitle("小鱼") sys.exit(app.exec_())
【基于PyQT5制作一个桌面摸鱼工具】到此这篇关于基于PyQT5制作一个桌面摸鱼工具的文章就介绍到这了,更多相关PyQT5桌面摸鱼工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- 迅捷流程图制作软件的使用方法!
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- 韵达基于云原生的业务中台建设 | 实战派
- EasyOA|EasyOA 基于SSM的实现 未完成总结与自我批判
- 基于stm32智能风扇|基于stm32智能风扇_一款基于STM32的智能灭火机器人设计
- stm32|基于STM32和freeRTOS智能门锁设计方案