【python】第五章:python-GUI编程

python-GUI编程

说明:本篇主要是从https://www.bilibili.com/video/BV1mg4y1p74P?spm_id_from=333.788.player.switch&vd_source=b6780e06031ac609460f6fbf017bbb39&p=14 这里学习后整理而得的。致敬原创。感谢原创。

一、什么是GUI编程?

我们想象中的软件至少得有一个界面展示,Graphical User Interface,图形化用户接口 ,简称GUI ,就是会有一个图形化的界面 展示给用户,用户可以通过这个界面,用鼠标点点点就可以变成代码指令 来实现其功能,而不需要用户亲自去敲代码指令来实现相应的功能。我们开发这样的界面就叫GUI编程 ,也就是图形界面开发

补充:什么是接口

接口又叫api。我举个例子来说明吧,比如前端(比如网页、ios上的app、安卓的app等都叫前端)和后端交互的入口。前端的数据是从后台服务器上获得的。那后台怎么给前端数据?前端传递给后台比如xxx地址?a=1b=2参数,后台看到后就把对应的数据传递给前端了。所以是后台预先定义一些数据传递的规范,前端按照这个规范请求,后端就把前端的请求数据送给前端。所以我们写网页或者写移动端的app时,我只需要按照固定的格式或者固定的地址和固定的参数去访问后端,我就可以获得我想要的数据。这部分内容现在已经可以通过flask框架轻松实现,可以参考我前面的博文:https://blog.csdn.net/friday1203/article/details/139511886

二、python-GUI学什么?

目前比较流行的GUI编程是Qt框架 ,所以本篇讲PyQt5。
Qt 是一个跨平台的C++ 框架,用于构建桌面应用程序。
PyQt5的底层就是Qt,是Python的图形用户界面(GUI)框架,或者说PyQt5就是用python把Qt的全部接口又重新写了一遍而成的。

从代码上看,我们就是要学习PyQt5库的这些模块:

三、环境搭建

既然我们用的是PyQT5,那开发环境自然是python,编辑器我们用VSCode。至于如何安装python,以及如何创建虚拟环境、如何安装和使用VSCode,如果你认真看过我前面的博文,这里就是pip install PyQT5这么简单了:

和flask框架一样,pip一键安装完毕就可以使用了。

四、PyQt5程序基本结构

上图就是代码开发的结构,我们一般都是先把ABD写完,就是代码框架搭建完毕了,然后根据业务需求写C部分的代码。

下面我把上图中的重点代码详细解读一下:

1、sys模块

sys模块是与python解释器交互的系统级工具,主要处理比如命令行参数、程序终止和系统配置等方面的功能。上图代码用到sys模块的只有第1、4、12行,下面我用代码直观展示一下这三行代码的作用:

2、用户程序对象:app = QApplication(sys.argv)

上面的拆解可能有点啰嗦,简单讲就是:当程序执行到B时,就创建了PyQt应用程序对象app,->然后执行控件操作C,->然后执行D中的app.exec_(),而app.exec_()是一个死循环,循环的是C,循环C的同时监控鼠标和键盘的用户事件,一旦监测到比如用户点击x了,app.exec_()就返回正常退出码,sys.exit()接收到退出码退出app应用程序。

五、控件操作

就是上面的C部分代码,包括控件的创建设置展示事件和信号的处理 (主要就是根据业务逻辑来设置了)。
1、顶层控件示例

可见,不管是按钮、文本框,还是窗口本身,它们都是"控件"。

如果你仅仅单独 创建了一个控件,那这个控件就是顶层控件。上面3个示例中的控件都是顶层控件。顶层控件默认是有一个窗口的,而且窗口会有一些装饰(比如有标题栏,有x - 口等),这些都是系统自带的,当然你也可以自己去设置标题、图标等。

2、非顶层控件 示例

一个控件 就是一个容器 ,就是可以在这个控件上面继续创建其他控件。那么顶层控件就是父控件 ,在父控件上的控件就是子控件

顶层控件有系统默认的装饰,非顶层控件就没有。

可见,创建子控件 时,只要把其父控件对象 当做参数传入子控件即可。

3、把多个控件打包成一个类:面向对象编程

多个界面 都有相同结构的控件组 时,我们把相同的控件组打包成一个,到时只要实例化类就可以完成控件组的创建工作,岂不是很省力,不用一个个界面的费力开发了。比如我每个界面都有两个按钮"是"、"不是",我就可以把这两个按钮打包成一个类:

如果你觉得上述打包方式还不够灵活,试试下面这种方式:

五、认识常用控件

没必要重复造轮子嘛,现在很多控件都被打包得非常完美了,我们只需要认识它,然后调用它即可。所以如何实现一个你心目中想要的界面,你首先得了解各个控件的样子,这样你才能拿来为我所用:

1、按钮类别的控件

2、输入控件

输入控件主要是用来接收用户的输入信息的。

(1)纯键盘输入

(2)步长调节:既可以通过键盘操作,也可以通过鼠标操作

待续。。。

相关推荐
闲人编程5 小时前
从多个数据源(CSV, Excel, SQL)自动整合数据
python·mysql·数据分析·csv·存储·数据源·codecapsule
B站_计算机毕业设计之家5 小时前
推荐系统实战:python新能源汽车智能推荐(两种协同过滤+Django 全栈项目 源码)计算机专业✅
大数据·python·django·汽车·推荐系统·新能源·新能源汽车
茯苓gao5 小时前
Django网站开发记录(一)配置Mniconda,Python虚拟环境,配置Django
后端·python·django
Full Stack Developme5 小时前
Python Redis 教程
开发语言·redis·python
码界筑梦坊5 小时前
267-基于Django的携程酒店数据分析推荐系统
python·数据分析·django·毕业设计·echarts
Cherry Zack5 小时前
Django视图进阶:快捷函数、装饰器与请求响应
后端·python·django
qq_4924484466 小时前
Jmeter设置负载阶梯式压测场景(详解教程)
开发语言·python·jmeter
lianyinghhh6 小时前
瓦力机器人-舵机控制(基于树莓派5)
人工智能·python·自然语言处理·硬件工程
Mike_Zhang7 小时前
python3.14版本的free-threading功能体验
python