文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用PyQT5制作一个桌面摸鱼工具

2023-06-29 04:56

关注

这篇文章主要介绍“怎么用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__()# 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 = Truedef 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 = currentdef mouseReleaseEvent(self, event):self.mouse_down = Falsedef 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制作一个桌面摸鱼工具”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯