手把手带你用PyQt5做小型桌面应用
导语:想制作属于自己的桌面应用程序吗?今天Disen带你手把手入门。
桌面应用
什么是桌面应用?即在操作系统的可视化的桌面上,可以运行的程序。
比如说QQ,微信、爱奇艺等这些都是桌面应用。
早期开发桌面应用,都用哪些语言呢?
桌面应用软件,在操作系统中,通过操作系统桌面窗体展现应用内容,并实现用户交互操作。编程语言有很多种,但并不是每一种语言都具有支持UI开发的能力,很多语言支持UI开发能力,是有人专门为之实现的UI开发支持平台。简单地说,需要有专门的语言UI库支持,如C++中的Qt库、MFC库,Java的Swing、AWT相关依赖库,否则语言是没办法进行快速UI开发的。
现在我们可以用Python开发啦,简单高效!那 Python开发桌面应用直接就可以开发吗?
不是的!要安装Python的PyQt5开发
GUI程序。
PyQt5
是基于C++的Qt5库,Qt5是用于桌面应用开发,PyQt5
是将C++实现的Qt5封装成Python方便使用的库包。
简单介绍下什么是PyQt5
PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。PyQt是由Phil Thompson 开发。
PyQt
是一个Python模块集, 它有超过300类,将近6000个函数和方法。它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。PyQt采用双许可证,开发人员可以选择GPL和商业许可。
在此之前,GPL的版本只能用在Unix上,从PyQt的版本4开始,GPL许可证可用于所有支持的平台。
PyQt5
可以做这些桌面程序。
环境安装
Conda环境
建议安装anaconda
集成环境,简称conda
环境, 内部默认安装数据分析(Numpy/Pandas)、爬虫Scrapy框架、Web框架、PyQt等相关工具。
以下是安装之后目录:
drwxr-xr-x 3 apple staff 96 2 25 2019 Anaconda-Navigator.app
drwxr-xr-x 449 apple staff 14368 10 10 18:48 bin
drwxr-xr-x 269 apple staff 8608 2 25 2019 conda-meta
drwxr-xr-x 3 apple staff 96 2 25 2019 doc
drwxr-xr-x 9 apple staff 288 11 26 14:40 envs
drwxr-xr-x 6 apple staff 192 2 25 2019 etc
drwxr-xr-x 305 apple staff 9760 5 17 2019 include
drwxr-xr-x 732 apple staff 23424 2 25 2019 lib
drwxr-xr-x 5 apple staff 160 2 25 2019 libexec
drwxr-xr-x 3 apple staff 96 2 25 2019 man
drwxr-xr-x 68 apple staff 2176 2 25 2019 mkspecs
-rw-rw-r-- 1 apple staff 745 2 25 2019 org.freedesktop.dbus-session.plist
drwxr-xr-x 15 apple staff 480 2 25 2019 phrasebooks
drwxr-xr-x 1086 apple staff 34752 9 29 18:05 pkgs
drwxr-xr-x 25 apple staff 800 2 25 2019 plugins
drwxr-xr-x 3 apple staff 96 2 25 2019 python.app
drwxr-xr-x 27 apple staff 864 2 25 2019 qml
drwxr-xr-x 7 apple staff 224 2 25 2019 resources
drwxr-xr-x 14 apple staff 448 2 25 2019 sbin
drwxr-xr-x 25 apple staff 800 2 25 2019 share
drwxr-xr-x 9 apple staff 288 2 25 2019 ssl
drwxr-xr-x 290 apple staff 9280 2 25 2019 translations
在 bin目录下,存在一个Designer.app应用是PyQt
的Designer设计器。文件的扩展名是.ui。
因为Conda安装之后,默认是base环境,所以可以使用Coda命令创建新的开发环境:
conda create -n gui python=python3.7
激活环境
conda activate gui
安装pyqt5
(gui) > pip install pyqt5==5.10
如果安装的PyQt5版本高于5.10,部分库将要单独安装,如WebEngine
(gui) > pip install PyQtWebEngine
PyCharm工具
编码IDE开发工具使用PyCharm, 需要增加两个Tools扩展工具。
UI设计工具
在工具的settings页面的左侧找到Tools菜单项, 选择它并点击右边的+按钮增加新的工具,在'Name'
输入框中输入qtDisigner
并在下面的Tool settings中Program指定程序的完整路径。如在Mac环境下/Users/apple/anaconda3/bin/Designer.app
, 并在Working directory
输入$FileDir$
。
Window 7/10下设置时需要注意,如果Anaconda安装在C盘用户的目录下,需要在CMD中安装pyqt-tools
,并从用户的目录下找到Designer.exe
。
pip install pyqt5-tools==5.9.2.1.3 --user
安装成功后,Program位置则在在C:\Users\{用户名}\AppData\Roaming\Python\Python37\site-packages\pyqt5_tools\designer.exe
另外,Working directory
工作目录也可以设置为当前项目目录。
转化工具
当ui设计完成后,需要将ui转成py脚本,进一步编码。与增加ui设计工具相同,在Tools中增加pyuic5
,Tool settings
的Program是pyuic5
,Parameters是$FileName$ -o $FileNameWithoutExtension$_rc.py
,Working director是$FileDir$
。
实战:PyQt5+Socket实现中心化网络服务
因为需要socket,所以简单介绍一下socket。
Socket是什么呢?
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤 :
服务器监听
客户端请求
连接确认
生活中的场景就是:一个生活中的场景。你要打电话给一个朋友,先拨号,朋友听到电话铃声后提起电话,这时你和你的朋友就建立起了连接,就可以讲话了。等交流结束,挂断电话结束此次交谈。生活中的场景就解释了这工作原理。
所以我们要想实现PyQt5+Socket
就要准备客户端和服务器端:
服务器端(部分代码):
if __name__ == '__main__':datas = DataSource().load()# 创建socket应用服务server = socket.socket()server.bind(('localhost', 18900)) # 绑定主机IP和Hostserver.listen()print('中心服务已启动\n等待客户端连接...')while True:client, addr = server.accept()ClientThread(client, addr).start()time.sleep(0.5)
客户端(部分代码):
class CenterClient():def __init__(self, server, port):super().__init__()self.server = serverself.port = portself.isConnected = Falseself.client = Nonedef connect(self):self.client = socket.socket()self.client.connect((self.server, self.port))msg = self.client.recv(8*1024)if msg == b'OK 200':print('---连接成功--')self.isConnected = Trueelse:print('---连接失败---')self.isConnected = Falsedef send_cmd(self, cmd):self.client.send(cmd.encode('utf-8'))data = self.client.recv(8*1024)print('{}命令结果: {}'.format(cmd, data))if data == b'Error':return '400'return data.decode('utf-8')
效果展示:
千锋教育Python教程_700集零基础Python入门到精通教程(保姆级新手教程)
本套python视频零基础实战教学,Python从入门到精通,是由千锋教育Python人工智能学院推出的“Python全栈+人工智能”免费python全套学习视频。通过学习本python视频,你可以从零开始,从Python软件下载到Python安装一步步掌握Python开发的各项相关技能,最终达到企业对Python开发工程师、后端开发工程师、Python全栈开发工程师、python爬虫开发工程师、python数据分析工程师等职位的要求。
手把手带你用PyQt5做小型桌面应用相关推荐
- 15 个 Python 开源项目,使用 PyQt 做小型桌面应用!
点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 来源:开源前哨 [导语]:想制作属于自己的桌面应用程序吗?这有 15 个示例带你手把手入门. 简介 本次将介绍 ...
- 手把手带你用Python做数据分析和可视化项目实战,能写进简历的那种!(另送15个实战案例)...
最近几年,数据分析可真是太火了. 阿里.字节等互联网巨头基于大数据打造的商业模式获得巨大成功,使得"数据思维"."数据能力"迅速成为衡量职场人能力的核心指标,专 ...
- 【Python案例】零基础手把手带你用Python写个桌面挂件
嗨嗨,大家好 ~ 我是小圆 大家应该都知道桌面挂件是啥吧,今天外面就来做一只桌面宠物吧 ~ 嘿嘿做一个皮卡丘的 ! 相关文件 声明:图片素材源于网络,侵歉删. 开发工具 Python版本:3.6.4 ...
- 1.1机器学习和深度学习综述(百度架构师手把手带你零基础实践深度学习原版笔记系列)
人工智能.机器学习.深度学习的关系 近些年人工智能.机器学习和深度学习的概念十分火热,但很多从业者却很难说清它们之间的关系,外行人更是雾里看花.在研究深度学习之前,我们先从三个概念的正本清源开始. 概 ...
- PyQt5制作简易桌面
PyQt是什么? QT是跨平台C++库的集合,它实现高级API来访问现代桌面和移动系统的许多方面.这些服务包括定位和定位服务.多媒体.NFC和蓝牙连接.基于Chromium的web浏览器以及传统的UI ...
- 影音服务器nas硬盘,手把手教您用win10做NAS:搭配emby,VM虚拟群晖,直通硬盘!打造家庭影音媒体服务器!...
手把手教您用win10做NAS:搭配emby,VM虚拟群晖,直通硬盘!打造家庭影音媒体服务器! 2020-02-23 20:14:28 1551点赞 10291收藏 1129评论 创作立场声明:Win ...
- win10 文件服务器 群晖,转帖!手把手教您用win10做NAS:搭配emby,VM虚拟群晖,直通......
转自什么值得买,作者:阿文菌,网址:https://post.smzdm.com/p/alpwezw0/ 创作立场声明:Windows系统下当NAS,最给力的方案,没有之一!前言 大家好!俺又来了! ...
- 手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换
系列文章目录 手把手带你玩转Spark机器学习-专栏介绍 手把手带你玩转Spark机器学习-问题汇总 手把手带你玩转Spark机器学习-Spark的安装及使用 手把手带你玩转Spark机器学习-使用S ...
- 手把手教你用Python做个可视化的“剪刀石头布”小游戏
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 众里寻他千百度.蓦然回首,那人却在 ...
最新文章
- Python可视化matplotlib自定义:运行时参数修改、自定义样式、默认样式+plt.style.use()
- TensorFlow:深度学习框架TensorFlow TensorFlow_GPU的简介、安装、测试之详细攻略
- JavaScript递归应用与实践
- Facebook妥协了,React回归
- java弹窗_弹出窗口总结 - 王道JAVA - CSDNBlog
- HDU 4379 水题,大水,但我WA了很多次,做了很久
- linux系统奔溃之vmcore:kdump 的亲密战友 crash
- JavaScript动态显示当前时间和倒计时的设计(附全码)_AX
- Atitit.Base64编码原理与实现设计
- C# RestSharp的http连接
- 游戏框架(Unity3D游戏客户端基础框架)
- Android Studio安装教程
- python绘制柱状图和折线图_python绘制散点图,柱状图和折线图
- java 计算百分比_java前后台计算百分比(保留2位小数)
- Glusterfs全局统一命名空间
- 【JavaScript】转载:JS高端奇淫技巧
- css动效:气泡在屏幕上随机漂浮
- 可燃气体在线监测无线传输终端
- 用凯泽窗设计FIR滤波器的优点
- SQL行转列、列转行的简单实现
热门文章
- linux 信号量 自旋锁 测试 实验,「正点原子Linux连载」第四十八章Linux并发与竞争实验...
- 对象序列化的 两种种方式(实现Serializable接口和实现Externalizable接口)
- (附源码)springboot学生社团信息管理 毕业设计011238
- 达人评测 i5 1240p 和i5 1135g7选哪个好
- Python中的函数(def)及参数传递
- 介绍几种java反编译软件使用
- HCIE-RS重磅消息!点击查看政策详情解读
- nacos server 1.3 网盘地址
- 电脑无法上网解决办法
- Chrome扩展:Run Selected HTML