PyQt5开发实践(一、准备篇)
前言
近一年来我开发了不少PyQt小项目,因为之前没用过使用C++语言的Qt,所以可以算是从零基础开始边学边做的,这个过程中再一次体会到国内技术社区的匮乏…… 国内关于PyQt的资料说少不少,说多也不多,主要是比较零散,也没什么比较好用的系统的学习资料… 所以这个PyQt,全靠看文档和国外社区,还有一个最重要的:自己摸索……
开发环境搭建
本文的开发环境搭建一部分是从书里学来的,一部分是实践中总结的,总之在目前没有一种比较好用的PyQt集成开发工具的情况下,达到暂时的比较高效的开发模式。
目前我用的PyQt开发方式沿用传统的MVC架构,将界面布局和逻辑实现分开~
具体:
- 用QtDesigner设计好界面,保存为
*.ui文件,然后使用PyQt工具中的pyuic5将ui文件转换为py文件,这个就是view - 在controller包新建对应的py文件,用来实现界面中的相应逻辑
项目结构参考:

使用QtDesigner
这个QtDesigner很简陋,别说跟VS比,就是跟Android Studio或者是IDEA里的Swing界面设计工具比起来,都算是弟弟,大概相当于98年的VB6.0六七成水平吧……
不过也聊胜于无,至少能设计简单的界面,就可以了。
由于Flutter、Android App写多了,我很习惯用各种线性布局,Qt在布局方面也不赖,有Hlayout和Vlayout可以用,在QtDesigner里使用也很方便:创建一个Main window,然后放几个控件上去,右键设置布局就好了,然后就可以尽情使用HLayout或者VLayout、GridLayout各类组件来做布局,如图:

安装PyQt工具
为了能使用前文提到的诸如QtDesigner、pyuic5工具,需要先安装。
pip install pyqt5
pip install pyqt5-tools
安装完之后就可以在Python安装目录下的Lib/site-packages下找到PyQt5和pyqt5-tools文件夹,我们要的QtDesigner、pyuic5等工具就在pyqt5-tools文件夹下。
在PyCharm中配置外部工具
为了让PyCharm可以更方便的做PyQt开发,还得配置几个外部工具,配置完之后进行一些快捷操作:比如右键ui文件可以直接使用QtDesigner打开,也可以使用将UI文件转换为py文件,如图:

具体配置方法如下:
首先,File->Settings,打开PyCharm的设置,选择到External Tools界面,如图

这里选择加号按钮打开添加页面,我们先把QtDesigner添加进去,如图

接着添加pyuic5工具,这个工具的命令参数格式是这样的:
{pyuic5_path} -o {target_path} {file_path}
所以配置方法是这样:

参数部分我再复制一下:
-o $FileDir$/$FileNameWithoutExtension$.py $FilePath$
推荐一个小开源项目
这是我之前写的一个简单的视频合并工具,下面是简单项目介绍
想合并视频,但是却找不到比较好用的工具,很多都要收费,我想着「这破功能还得收费?」,于是决定自己搞一个,一开始用Python做了一个,效果还不错,完美完成了我的视频合并任务,不过没有图形界面,想分享给朋友一起用也没办法,于是用Qt写了个图形界面套上去就有了本项目

地址:https://github.com/Deali-Axy/VideoMerge
推荐一本书
虽说国内系统的学习资料很少,不过也是让我找到了这本

忘记在哪找的PDF了,里面是没有目录的,查阅起来很费劲,我花时间整本书过了一遍,手动标注了目录,如图

也算是对整本书的内容了解得七七八八吧,前面对搭建PyQt开发环境什么的,还是有些帮助的,后面各种组件的介绍就没那么详细了,有些有用的东西书里都没有涉及到,还是得依靠Google。so,这本书只能说是矮子里挑高个,差强人意吧~
欢迎交流
程序设计实验室专注于互联网热门新技术探索与团队敏捷开发实践,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

- 博客园:https://www.cnblogs.com/deali/
- 打代码直播间:https://live.bilibili.com/11883038
- 知乎:https://www.zhihu.com/people/dealiaxy
PyQt5开发实践(一、准备篇)的更多相关文章
- vue 2.0 开发实践总结之疑难篇
续上一篇文章:vue2.0 开发实践总结之入门篇 ,如果没有看过的可以移步看一下. 本篇文章目录如下: 1. vue 组件的说明和使用 2. vuex在实际开发中的使用 3. 开发实践总结 1. ...
- vue2.0 开发实践总结之入门篇
vue2.0 据说也出了很久了,博主终于操了一次实刀. 整体项目采用 vue + vue-router + vuex (传说中的vue 全家桶 ),构建工具使用尤大大推出的vue-cli 后续文 ...
- Android游戏开发实践(1)之NDK与JNI开发03
Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...
- TFS 2015 敏捷开发实践 – 在Kanban上运行一个Sprint
前言:在 上一篇 TFS2015敏捷开发实践 中,我们给大家介绍了TFS2015中看板的基本使用和功能,这一篇中我们来看一个具体的场景,如何使用看板来运行一个sprint.Sprint是Scrum对迭 ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
- ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除
本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(3)修改资料、修改密码
在上一篇博客中实现了用户的注销和登录,其实代码里落了点东西,就是用户登录要更新最后一次登录时间和登录IP,这次补上.今天做修改资料和修改密码,TryUpdateModel是新用到的东西. 目录: AS ...
- 移动Web应用开发入门指南——兼容篇
兼容篇 兼容篇是我最想写的一部分,在这之前也总结过很多关于移动开发的兼容问题与解决方案.对于移动Web开发来说,兼容是开发重心,通常要花费30%甚至更多的时间去处理一些兼容问题,甚至时间花掉了,问题依 ...
- 移动Web应用开发入门指南——交互篇
交互篇 从PC到移动端,视觉和交互是用户能直接感受到的差异.在视觉篇中已经提到,移动设备的物理属性一部分影响到视觉,另外一些部分将影响到交互.那么,移动设备影响交互的物理属性都有哪些变化呢?对于这个问 ...
随机推荐
- 【python】Leetcode每日一题-二叉搜索树节点最小距离
[python]Leetcode每日一题-二叉搜索树节点最小距离 [题目描述] 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 示例1: 输入:root = [4 ...
- Nmap浅析(1)——主机发现
主机发现 当网络不通时,Ping一下网关来检查网关是否正常.当测试的目标是一个网络时,其中在线的主机才是目标,那么就需要技术来找出这些目标. 技术的方法大都与TCP/IP协议族中的协议相对应. ...
- 【js】Leetcode每日一题-二叉树的堂兄弟节点
[js]Leetcode每日一题-二叉树的堂兄弟节点 [题目描述] 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但 父节点不 ...
- 前端必读:Vue响应式系统大PK(下)
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://www.sitepoint.com/vue-3-reactivity-system ...
- 用JIRA管理你的项目——(二)JIRA语言包支持及插件支持
昨天兴奋地把JIRA环境搭好,瞅了一眼管理界面--全英文,真是汗! 尚且不说全中文版管理界面让人操作起来多少会有困难,更别说是全英文! 昨天赞叹JIRA语言包支持丰富,今天终于找到了号称100%的语言 ...
- 二进制部署K8S-3核心插件部署
二进制部署K8S-3核心插件部署 5.1. CNI网络插件 kubernetes设计了网络模型,但是pod之间通信的具体实现交给了CNI往插件.常用的CNI网络插件有:Flannel .Calico. ...
- [rhel-media] :Yum软件仓库唯一标识符,避免与其他仓库冲突。
第1步:进入到/etc/yum.repos.d/目录中(因为该目录存放着Yum软件仓库的配置文件). 第2步:使用Vim编辑器创建一个名为rhel7.repo的新配置文件(文件名称可随意,但后缀必须为 ...
- Ansible_使用Ansible galaxy部署角色
一.介绍Anisble galaxy 1.介绍Ansibleu galaxy 1️⃣:Ansible Galaxy (官网:https://galaxy.ansible.com)是一个Ansible内 ...
- 用于监视Linux上的内存使用情况的Bash脚本
用于监视Linux上的内存使用情况的Bash脚本 2019-06-17 11:32:45作者:戴进稿源:云网牛站 在本文中,我们添加了两个shell脚本来监视Linux操作系统上的内存利用率,即用于监 ...
- ubuntu中软件的升级管理-(转自Josh_)
给Ubuntu软件升级命令 sudo apt-get update --更新软件源 sudo apt-get upgrade -更新已经安装的软件 以非root用户更新系统 sudo: sudo是l ...