Python 创建用户界面之 PyQt5 的使用
之前给大伙介绍了下 tkinter,有朋友希望小帅b对其它的 Python GUI 框架也说道说道,那么今天就来说说 PyQt5 如何创建用户界面。
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789
Qt 是用 C++ 写的开发工具,其中包含一个非常强大的 GUI 框架,写出来的程序可以轻松运行在不同的操作系统中, PyQt 就是用 Python 基于它实现的,这样我们可以使用 Python 来调用 Qt 中的 C++ 方法, 从而简单的实现用户界面程序,构建的时候也不会牺牲 C++ 的速度。
还有,它可以运行在 Windows,Linux,Android,MacOS,iOS 等常见的系统里面。
那么,怎么玩它呢?
接下来就是:
学习 Python 的正确姿势
如果你之前没有安装过 PyQt5 的话可以使用 pip 安装一下:
pip install PyQt5
安装完了之后,首先导入 PyQt5:
接着可以创建一下窗口,继承 QMainWindow, 然后想在自己的窗口中干嘛就干嘛,这里先定义一下窗口的标题:
接着创建 app:
这里传入了 sys.argv 主要是用来接收命令行传入的参数,如果你不需要的话,直接传个空 list 也是可以的:
接着我们把刚刚的窗口实例化一下,show 出来:
最后让 app 循环等待交互:
运行一波,一个可爱的小窗口跃然于你我的心中:
接着我们在这个窗口里面塞点组件吧。
为了方便,我们直接把所有的组件导进来吧:
每个组件都是一个对象,先来加个文本,可以这样:
运行一波就是这样:
一样的,每个组件的属性都可以自行设置样式和位置:
这里我们设置字体颜色为熟悉的绿色,然后让它居中对其,其中的 Qt 可以通过 PyQt5.QtCore 导入:
运行一波:
其它的组件等下再介绍,我们先来了解一下 PyQt5 的布局。
PyQt5 的 Layout 有好几种,我分别跟你说一下:
垂直的布局,QVBoxLayout:
我们在这里创建了一个 QVBoxLayout ,并且在刚刚的 Label 下创建了一个按钮,把这两组件都塞到这个垂直的 layout 里面去,最后显示到我们的窗口中,就变成这样了:
水平布局,QHBoxLayout:
同样的道理,只不过我们这次换成了水平的 Layout ,运行一波就是水平排放了:
表格布局,QGridLayout:
和上次 tkinter 说的一样,你也可以把一个窗口看成一个表格,这里我们使用 QGridLayout ,然后把组件放在你想放的单元格中去,我们添加了一个 label 和四个 button ,让它们分别放在不同的单元格中,运行一波就是这样:
以上这几个就是常用到的布局方式。
接着我们再来了解一下按钮组件的点击时间绑定,比如我们想当用户点击 “滚” 的时候,让 “你被绿了” 变成 “对不起,我错了!”,可以这样实现:
调用 connect 方法来绑定点击事件的回调:
那么这时候点击的 Button0 的时候就会调用 changeText 方法:
运行一波就是这样:
当然,你也可以自定义一个按钮,继承 QPushButton,然后拦截点击事件,在自己的按钮中处理,像这样创建一个自己的按钮,然后当触发鼠标点击按钮的时候就会调用 mousePressEvent 方法:
接着在窗口实例化一个,然后添加到 Layout 中去:
运行一波:
接着我们来看看弹窗,比如我们想要点击 “滚啊” 就弹出一个窗口,那么就可以这样:
绑定的 showDialog 方法,这里主要弹出一个输入确认框,当用户按确认的时候就改变 Label 的文本内容:
运行一波:
当然,你完全可以自定义一个 Dialog, 直接继承 QDialog 然后在里面定义你想要弹窗的内容,比如这里我就让它弹出一个和原本窗口一样的内容:
当点击 “滚啊” 的时候,实例化自己的 Dialog :
这样就可以弹出自己的窗啦:
PyQt5 的其它常用组件用起来也差不多,大概有这么一些:
运行起来是这样子的:
Python 创建用户界面之 PyQt5 的使用的更多相关文章
- Python 创建本地服务器环境生成二维码
一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...
- 使用Python创建AI比你想象的轻松
使用 Python 创建 AI 比你想象的轻松 可能对AI领域,主要开发阶段,成就,结果和产品使用感兴趣.有数百个免费源和教程描述使用Python的AI.但是,没有必要浪费你的时间看他们.这里是一个详 ...
- 【翻译】利用Qt设计师窗体在运行时创建用户界面(Creating a user interface from a Qt Designer form at run-time)
利用Qt设计师窗体在运行时创建用户界面 我们利用Calculator窗体例子中创建的窗体(Form)来展示当一个应用(application)已经生成后,是可以在其运行时产生与例子中相同的用户界面. ...
- Python创建Cocos2d-x 2.2方法
把创建项目做成一个批处理,当创建项目时可以省时省力很多. 操作步骤 1.在 E:\cocos2d-x-2.2.1\tools\project-creator 目录下创建 create_project. ...
- Python创建list和按照索引访问list
Python创建list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一个list表示:>> ...
- 腾讯发布 Omix 1.0 - 用 JSX 或 hyperscript 创建用户界面
腾讯发布 Omix 1.0 - 用 JSX 或 hyperscript 创建用户界面 今天,腾讯正式开源发布 Omix 1.0, 让开发者使用 JSX 或 hyperscript 创建用户界面. Gi ...
- [翻译] 使用 Python 创建你自己的 Shell:Part II
目录 使用 Python 创建你自己的 Shell:Part II 原文链接与说明 步骤 4:内置命令 最后的想法 使用 Python 创建你自己的 Shell:Part II 原文链接与说明 htt ...
- [翻译] 使用 Python 创建你自己的 Shell:Part I
目录 使用 Python 创建你自己的 Shell:Part I 原文链接与说明 步骤 0:项目结构 步骤 1:Shell 循环 步骤 2:命令切分 步骤 3:执行 运行 使用 Python 创建你自 ...
- 使用Python创建一个简易的Web Server
Python 2.x中自带了SimpleHTTPServer模块,到Python3.x中,该模块被合并到了http.server模块中.使用该模块,可以快速创建一个简易的Web服务器. 我们在C:\U ...
随机推荐
- java 基础(二) 搭建Java编译环境(linux系统)
jdk安装配置 首先下载JDK和JRE,这里你的需要看看你的Linux系统是多少位的,比如我的是64位的:下载JDK并指定到Download目录,JRE同样操作:解压并且配置环境: tar -zxvf ...
- EM算法的收敛性
https://blog.csdn.net/kevinoop/article/details/80522477
- 重学c#系列——c# 托管和非托管资源(三)
前言 c# 托管和非托管比较重要,因为这涉及到资源的释放. 现在只要在计算机上运行的,无论玩出什么花来,整个什么概念,逃不过输入数据修改数据输出数据(计算机本质),这里面有个数据的输入,那么我们的内存 ...
- C#文件说明
Bin -- 用来存放编译的结果,是默认的输出路径,项目属性—>配置属性—>输出路径. obj -- 用于存放编译过程中生成的中间临时文件.增量编译:项目属性—>配置属性—>高 ...
- Ordinary - 官方原版软件下载站
官网:http://a-1.vip/exe/
- 解决win10安装flask-mysqldb报错 Python2.7
win10上安装的pycharm,在pycharm创建的py2.7虚拟环境中安装flask-sqlalchemy 执行pip install flask-mysqldb报错 error: Micros ...
- 一起聊聊PHP的几个设计模式
工厂模式 1.简单工厂模式 目的 简单工厂模式是一个精简版的工厂模式. 它与静态工厂模式最大的区别是它不是『静态』的.因为非静态,所以你可以拥有多个不同参数的工厂,你可以为其创建子类.甚至可以模拟 ...
- P3756 [CQOI2017]老C的方块
题目链接 看到网格图+最优化问题,当然要想黑白染色搞网络流.不过这道题显然无法用黑白染色搞定. 仔细观察那四种图形,发现都是蓝线两边一定有两个格子,两个格子旁边一定还有且仅有一个格子.因此我们可以这么 ...
- 基于Python爬虫采集天气网实时信息
相信小伙伴们都知道今冬以来范围最广.持续时间最长.影响最重的一场低温雨雪冰冻天气过程正在进行中.预计,今天安徽.江苏.浙江.湖北.湖南等地有暴雪,局地大暴雪,新增积雪深度4-8厘米,局地可达10- ...
- python 中文乱码 list 乱码处理
list 乱码 data_list = ["中文"] print str(data_list).decode("string_escape") mysql 获取 ...
转存失败