【导语】:想制作属于本人的桌面应用程序吗?这有 15 个示例带你手把手入门。
简介
本次将介绍一个用 PyQt 框架和 Python 编写的 15 个小型桌面应用程序的合集。
这其中很多应用程序在 learnpyqt 网站上有更具体的探讨。如果你对创立GUI应用程序还不相熟,能够查看 pyqt5 入门教程。
这个开源我的项目的地址是:https://github.com/learnpyqt/...
App列表
这些 app 将展现 Qt 框架的各个局部,包含高级小部件、多媒体、图形视图和无装璜窗口。当然,最乏味/有特色且性能残缺的利用是扫雷,纸牌和画图。
- 网络浏览器(无选项卡)-“MooseAche”
- 网络浏览器(选项卡)-“Mozzarella Ashbacker”
- 扫雷-“Moonsweeper”
- 记事本-“No2Pads”
- 计算器-“Calculon”(QtDesigner)
- 文本编辑器-“Megasolid Idiom”
- 摄像头/快照-“NSAViewer”
- 播放器-“Failamp”
- 便笺-“Brown Note”(QtDesigner)
- 画图-“Piecasso”(QtDesigner)
- 解压缩-“7Pez”(QtDesigner)
- 翻译-“Translataarrr”(QtDesigner)
- 天气-“Raindar”(QtDesigner)
- 货币转换器-“Doughnut”(PyQtGraph)
- 单人纸牌-“Ronery”(qgraphicscene)
装置应用
要应用这些app,首先须要装置requirements文件。在大多数状况下,惟一要装置的就是PyQt5,偶然也要装置其余依赖。如果要装置某些app特定的依赖,进入那个app文件夹内运行以下代码即可:
shell代码
pip3 install -r requirements.txt
装置完之后,即可用python3来执行
python3 <filename>.py
应用程序的窗口就呈现了。
具体介绍
1、网络浏览器(无选项卡)
Mooseache:浏览器创造之初,它会是什么样子?
这是一个用Python和Qt构建的web浏览器示例。应用Qt5.6中引入的QtWebEngineWidgets零碎,它提供了一个带有罕用控件的单窗口浏览,以及保留和加载HTML体验的性能。
2、网络浏览器(选项卡)
Mozzarella Ashbadger:应用选项卡降级你的浏览体验
Mozarella Ashbacker是网络浏览畛域的最新反动!返回上一页!打印!保留文件!帮忙列表!跟其余浏览器一样的话纯属巧合。
代码正文
选项卡
增加选项卡反对使浏览器的内部结构变简单不少,因为咱们当初须要跟踪以后流动的浏览器视图,既要更新UI元素(URL栏、HTTPs图标)以更改以后流动窗口中的状态,又要确保UI事件被调度到正确的web视图。
这是通过应用过滤事件的两头槽和增加信号重定向(应用lamba函数使其放弃简短)来实现的。
3、扫雷
Moonsweeper:用pyqt来克隆一艘扫雷艇,和外星人在月球上斗智斗勇。
摸索神秘的月球,但不要太靠近外星土著哦!
Moonsweeper是一款单人益智游戏。游戏的指标是摸索你着陆的太空火箭四周的区域,而不是靠近致命的Bug外星人。可信赖的计数仪会通知你左近的bug(雷)的数量。
这是一个简略的单人摸索游戏,模拟扫雷船,你必须在不涉及暗藏的地雷的状况下揭示所有的小方块。这个小方块实现是应用定制的QWidget对象,这些对象别离将它们的状态保留为mine、status和相邻的mine计数。在这个版本中,地雷被外星虫子(Bug)取代,它们也可能是其余任何货色。
代码正文
第一回合设计
在许多扫雷的变种中,初始回合被认为是一个自在回合:如果你在第一次点击时击中一枚地雷,它会被挪动到其余中央。这里咱们投机取巧了一点,让第一次尝试确保它是在一个非地雷的地点。这使咱们不用放心第一步走得不好导致须要咱们从新计算相邻。咱们把它解释为“围绕火箭的初步摸索”,让它听起来挺正当的。
4、记事本
No2Pads:用PyQt写的记事本
一个非常简单的记事本克隆,应用QTextEdit小部件来解决。反对文件加载、保留和打印。
5、计算器
Calculon:用PyQt写的桌面计算器
一个应用Python在PyQt中实现的简略计算器应用程序。用户界面是在Qt设计器中设计的,计算器操作是应用简略的基于堆栈的逻辑实现的。
6、文本编辑器
Megasolid-Idiom-用PyQt写的富文本编辑器
这款编辑器是基于记事本的扩大,同样应用QTextEdit组件 ,但启用了富文本编辑。
反对多种字体、款式和段落文本对齐形式。还反对拖放图像,这些图像会主动关上并嵌入。
也反对保留和关上HTML格局的文档。
7、摄像头
NSAViewer-有人正看着你
应用此摄像头快照应用程序,你能够拍摄摄像头以后正在查看的内容的照片。应用QtMultimedia多媒体框架解决与相机的所有交互,并反对多个摄像头(如果有的话)。
8、播放器
Failamp-用PyQt打造简略的播放器
能够听音频和看视频,内置播放列表的简略应用程序。应用QtMultimedia和QtMultimediaWidgets解决播放和治理播放列表。
主界面提供了一个播放列表窗口,您能够在其中拖拽要播放的媒体文件。提供了规范媒体控件,以及时间轴部件和音量控件。
你还能够弹出一个浮动在顶部的视频窗口。
9、便笺
Brown Note—PyQt中的桌面便笺应用程序
应用这个浮动笔记应用程序在桌面上做长期笔记。正文存储在本地SQLite数据库中。
这个应用程序非常简单,然而演示了在PyQt中创立无装璜窗口。删除窗口装璜会导致不能拖动窗口,因而咱们必须本人从新实现这种行为。
10、画图
Piecasso-PyQt中的桌面绘画应用程序
用Piecasso来表白本人吧,惟一一个以派的现成图片为特色的绘画程序。
Piecasso是windows95中画图程序的一个克隆,在此之上做了一些增减。这个程序的特点是有规范的工具,包含钢笔,刷子,填充,喷雾罐,橡皮擦,文本和一些形态。
你能够复制任何形态的图像,但不反对粘贴+浮动。画布的大小是固定的,加载的图像会依据须要进行调整。还包含一个图章工具,其中预装了美味派的图片。
代码正文
事件处理
所有工具都是用嵌套的事件处理程序实现的,这些处理程序会依据须要转发事件。这容许在具备独特行为(例如形态绘制)的工具之间重复使用大量代码。增加抉择区域动画须要一个计时器(更新匍匐蚂蚁),这减少了一些代码复杂性。
染色法
从性能的角度来看,这是这个应用程序中最辣手的局部。间接查看像素太慢(整个画布填充工夫约为10秒)。在Python中实现这一点的大多数代码都应用numpy,但我不想独自为此引入依赖关系。
通过将图像导出为bytestring,而后向下采样到每像素一个布尔字节(用于匹配/不匹配)来简化比拟循环,能够达到正当的速度。
尽管这个搜寻填充算法依然相当愚昧。
11、解压缩
7Pez-有史以来最好/最差的解压应用程序
用一只猫解压你的文件。将zip文件拖放到悬空喵咪上,填充它手臂处。按下头部将会解压缩你的文件到当前目录。
当你关上应用程序时,猫咪的手臂处是空的。
只需将.zip文件拖放到猫咪上,就能够用文件填充它。
按下猫的头,文件就会解压了。
12、翻译
Translatarrrr-从任何语言到海盗语的即时翻译
从任何语言翻译(谷歌翻译反对)到海盗语。它调用了近程api http://api.funteransations.com 将英语翻译成海盗语,以及谷歌的一个非官方的Python包装器将其余语言翻译成英语。
to English局部应用基于web界面的Python库,而不是官网API客户机,因为没有必要且客户端是非收费的。所以应用程序的这一部分不能保障100%工作。
to Pirate局部应用了一个受重大限度的公共API。你大略只能收费翻译5次就被限度了。你能够花钱买一个API密钥来解除限制。
所以总结下来,这个程序用途不大。
13、天气
Raindar-PyQt内置的天气预报应用程序
获取每日天气和15小时预报。数据来自收费的天气预报API https://openweathermap.org/
14、货币转换器
Doughnut-用PyQt实现的一个汇率追踪器
这是一个用PyQt实现的简略的货币汇率跟踪器,数据来自fixer.io API。默认设置显示前180天的货币数据。
它会逐渐加载数据,分辨率一直进步。给定日期的汇率显示在右侧面板中,并依据鼠标地位进行更新。
代码正文
数据处理
该界面显示了过来180天的费率跟踪图(应用PyQtGraph)。因为咱们不想向收费服务发垃圾邮件,所以对API的申请速率被限度为每秒1次,因而残缺的数据加载工夫为180秒(3分钟)。
为了防止每次期待,咱们应用requests_cache办法,它应用本地sqlite数据库来存储最近申请的后果。对数据的申请应用一种渐进的“搜寻”办法:如果数据中存在缺口,则首先填充两头点,并且它更偏向于首先加载最近的工夫点。这意味着随着工夫的推移,整个情节的分辨率会逐步进步,而不是只进步缺口之后的。
转换
默认状况下,应用程序检索的是欧元汇率,并显示到该根底货币的换算。如果您更改根底货币,它将再次检索该新货币的所有数据。这个行为略微有点愚昧,因为如果咱们有对欧元的汇率,咱们能够通过欧元计算任何其余货币->货币转换(损失一点点准确性)。
15、单人纸牌
Ronery-PyQt中的纸牌游戏
经典的纸牌游戏。游戏跟纸牌在其余方面是雷同的,提供雷同的选项。它由PyQt构建,应用QGraphicsScene来解决游戏区域。
经典的纸牌获胜屏幕也实现了,只管因为播放画布不是位图,所以不会“填满”。但依然足够令人满意。
配置选项容许1次发1张或3张,容许3、5或有限轮。
代码正文
卡片解决
这里应用的办法是将每个能够搁置卡片的中央作为一个“堆栈”对象来解决它以后持有的卡片。每个堆栈负责其堆栈上卡片的布局。
堆栈还负责承受/回绝尝试在其上搁置卡的行为。有些堆栈,如交易堆不承受任何降牌。其余的非凡堆有特定的规定。
在大多数状况下,除了底部的“在玩”牌堆外,牌堆上的任何牌都没有分割。底部的卡片具备父子关系,容许一次拖动多张卡片。
完结动画
最初的完结动画是独立的,并且产生在较量工夫之外,所以第一个想法是有一个独自的假事件循环,应用QApplication.processEvents勾选。但那实现起来有点恶心。
相同,动画是由QTimer解决的,QTimer通常在播放过程中处于闲暇状态,一旦被触发就会重复ping一个动画后退投放。这会挪动卡片(伪装是“重力”,反弹)以及在它们来到游戏区域后从新重叠它们。应用失常的重叠代码就能够实现从新重叠,这样它们就能够堆积起来。最初一个难题是阻止用户的交互,否则卡片依然能够被抓取和抛弃。实现这一点的最简略办法是在整个窗口上搁置一个对象,该对象被设置为捕捉(并放弃)所有鼠标单击。
最初,想创立本人的应用程序吗?
如果你感觉这些 app 有些太过简洁,心愿理解更多对于 PyQt 的信息,请参阅PyQt5 教程,它涵盖了应用PyQt构建app从前到后所需的所有常识。
你也能够在这个网站上找到对于这些“小型app”的评论。
扩大
如果你想理解更多,能够移步这里观看更多的官网示例:https://diagrams.mingrammer.c...
开源前哨
日常分享热门、乏味和实用的开源我的项目。参加保护 10万+ Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。