导语:想制作属于自己的桌面应用程序吗?今天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扩展工具。

  1. 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工作目录也可以设置为当前项目目录。

  1. 转化工具

当ui设计完成后,需要将ui转成py脚本,进一步编码。与增加ui设计工具相同,在Tools中增加pyuic5Tool 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做小型桌面应用相关推荐

  1. 15 个 Python 开源项目,使用 PyQt 做小型桌面应用!

    点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 来源:开源前哨 [导语]:想制作属于自己的桌面应用程序吗?这有 15 个示例带你手把手入门. 简介 本次将介绍 ...

  2. 手把手带你用Python做数据分析和可视化项目实战,能写进简历的那种!(另送15个实战案例)...

    最近几年,数据分析可真是太火了. 阿里.字节等互联网巨头基于大数据打造的商业模式获得巨大成功,使得"数据思维"."数据能力"迅速成为衡量职场人能力的核心指标,专 ...

  3. 【Python案例】零基础手把手带你用Python写个桌面挂件

    嗨嗨,大家好 ~ 我是小圆 大家应该都知道桌面挂件是啥吧,今天外面就来做一只桌面宠物吧 ~ 嘿嘿做一个皮卡丘的 ! 相关文件 声明:图片素材源于网络,侵歉删. 开发工具 Python版本:3.6.4 ...

  4. 1.1机器学习和深度学习综述(百度架构师手把手带你零基础实践深度学习原版笔记系列)

    人工智能.机器学习.深度学习的关系 近些年人工智能.机器学习和深度学习的概念十分火热,但很多从业者却很难说清它们之间的关系,外行人更是雾里看花.在研究深度学习之前,我们先从三个概念的正本清源开始. 概 ...

  5. PyQt5制作简易桌面

    PyQt是什么? QT是跨平台C++库的集合,它实现高级API来访问现代桌面和移动系统的许多方面.这些服务包括定位和定位服务.多媒体.NFC和蓝牙连接.基于Chromium的web浏览器以及传统的UI ...

  6. 影音服务器nas硬盘,手把手教您用win10做NAS:搭配emby,VM虚拟群晖,直通硬盘!打造家庭影音媒体服务器!...

    手把手教您用win10做NAS:搭配emby,VM虚拟群晖,直通硬盘!打造家庭影音媒体服务器! 2020-02-23 20:14:28 1551点赞 10291收藏 1129评论 创作立场声明:Win ...

  7. win10 文件服务器 群晖,转帖!手把手教您用win10做NAS:搭配emby,VM虚拟群晖,直通......

    转自什么值得买,作者:阿文菌,网址:https://post.smzdm.com/p/alpwezw0/ 创作立场声明:Windows系统下当NAS,最给力的方案,没有之一!前言 大家好!俺又来了! ...

  8. 手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换

    系列文章目录 手把手带你玩转Spark机器学习-专栏介绍 手把手带你玩转Spark机器学习-问题汇总 手把手带你玩转Spark机器学习-Spark的安装及使用 手把手带你玩转Spark机器学习-使用S ...

  9. 手把手教你用Python做个可视化的“剪刀石头布”小游戏

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 众里寻他千百度.蓦然回首,那人却在 ...

最新文章

  1. Python可视化matplotlib自定义:运行时参数修改、自定义样式、默认样式+plt.style.use()
  2. TensorFlow:深度学习框架TensorFlow TensorFlow_GPU的简介、安装、测试之详细攻略
  3. JavaScript递归应用与实践
  4. Facebook妥协了,React回归
  5. java弹窗_弹出窗口总结 - 王道JAVA - CSDNBlog
  6. HDU 4379 水题,大水,但我WA了很多次,做了很久
  7. linux系统奔溃之vmcore:kdump 的亲密战友 crash
  8. JavaScript动态显示当前时间和倒计时的设计(附全码)_AX
  9. Atitit.Base64编码原理与实现设计
  10. C# RestSharp的http连接
  11. 游戏框架(Unity3D游戏客户端基础框架)
  12. Android Studio安装教程
  13. python绘制柱状图和折线图_python绘制散点图,柱状图和折线图
  14. java 计算百分比_java前后台计算百分比(保留2位小数)
  15. Glusterfs全局统一命名空间
  16. 【JavaScript】转载:JS高端奇淫技巧
  17. css动效:气泡在屏幕上随机漂浮
  18. 可燃气体在线监测无线传输终端
  19. 用凯泽窗设计FIR滤波器的优点
  20. SQL行转列、列转行的简单实现

热门文章

  1. linux 信号量 自旋锁 测试 实验,「正点原子Linux连载」第四十八章Linux并发与竞争实验...
  2. 对象序列化的 两种种方式(实现Serializable接口和实现Externalizable接口)
  3. (附源码)springboot学生社团信息管理 毕业设计011238
  4. 达人评测 i5 1240p 和i5 1135g7选哪个好
  5. Python中的函数(def)及参数传递
  6. 介绍几种java反编译软件使用
  7. HCIE-RS重磅消息!点击查看政策详情解读
  8. nacos server 1.3 网盘地址
  9. 电脑无法上网解决办法
  10. Chrome扩展:Run Selected HTML