怎么用PyQT5制作一个桌面摸鱼工具
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要介绍"怎么用PyQT5制作一个桌面摸鱼工具"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用PyQT5制作一个桌面摸鱼工具"文章能帮助大家解决问
千家信息网最后更新 2025年11月06日怎么用PyQT5制作一个桌面摸鱼工具
这篇文章主要介绍"怎么用PyQT5制作一个桌面摸鱼工具"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用PyQT5制作一个桌面摸鱼工具"文章能帮助大家解决问题。
按键功能控制
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__() # drag self.pos =[0,0] self.mouse_down = False self.down = [0,0] self.prev = [0,0] # text self.txtName = '' self.text = [] self.index = 0 # style self.show_info = False self.font_size = 8 self.bgColor = QColor(255,255,255) self.defPalette() # self.read_Txt() def mousePressEvent(self, event): current = [event.pos().x(),event.pos().y()] self.down = current self.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+1 self.update() if event.key() == Qt.Key_Up: if self.index > 0: self.index = self.index-1 self.update() if event.key() == Qt.Key_F: if event.modifiers() & QtCore.Qt.ShiftModifier and self.font_size >2: self.font_size -= 2 else: self.font_size += 2 self.update() if event.key() == Qt.Key_I: self.show_info = not self.show_info self.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 = path self.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+1 elif e.angleDelta().y() > 0: if self.index > 0: self.index = self.index-1 self.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制作一个桌面摸鱼工具"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
功能
文件
工具
桌面
制作
知识
代码
字体
行业
UTF-8
不同
实用
顺畅
上下
上下文
书签
内容
大小
实用性
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全该如何保护个人信息安全
做软件开发用啥笔记本电脑
东营协同办公oa软件开发公司
京北方软件开发
怎么进入电脑后台数据库
vue使用的web服务器
收缩数据库日志文件sql
两台电脑一台做服务器
移动端和服务器端通信安全
联通服务器坏了怎么连接网络
数据库和当前日期做比较
元气骑士服务器在哪
网络安全防护基本原则
网络安全法实施行时间
西门子ct怎么重建数据库
橙心时代网络技术有限公司
计算机三级的数据库技术
软件开发中心视频
标签机无法关联数据库什么情况
一个带数据库的网页
北京服务器销售
网络错误服务器连接已断开
现代软件开发之父
关于网络安全文化作品
在5G中软件开发
围棋培训软件开发
警方网络技术侦查有多强
高中生网络安全知识内容
湖北高翎网络技术有限公司
河南中小学生网络安全直播