PyQt5学习 (1)--对象的基本操作、QObject
参考视频:【Python-GUI编程-PyQt5 (少)】 https://www.bilibili.com/video/BV17J41177ro/?share_source=copy_web&vd_source=15fb681e1f5b7ce6070d9ce0522af1bc
【Python Pyqt5最详细教程(一)】 https://www.bilibili.com/video/BV1mg4y1p74P/?share_source=copy_web&vd_source=15fb681e1f5b7ce6070d9ce0522af1bc
各个控件的简单介绍: 【Python-GUI编程-PyQt5 (少)】 【精准空降到 02:21】 https://www.bilibili.com/video/BV17J41177ro/?p=14&share_source=copy_web&vd_source=15fb681e1f5b7ce6070d9ce0522af1bc&t=141
需要的时候可以反复观看
控件的学习和使用需要类和继承的思想
对象的名称和属性的设置
案例演示:qss的使用
对象的父子关系操作
内存管理机制:
1.QObject继承树:
(1).所有的对象都是直接或间接继承自QObject
(2).QObjects在一个对象树中组织他们自己:当创建一个QObject时,如果使用了其他对象作为其父对象,那么,他就会被添加到父对象的children()列表中
(3).当父对象被销毁时,这个QObject也会被销毁
2.QWidget:
(1).拓展了父子关系
(2).当一个控件设置了父控件:会包含在父控件内部、收父控件区域裁剪、父控件删除时,子控件会自动删除。
父子关系之间的作用效果
for sub_widget in win_root.findChildren(QLabel):
这行代码可以找到win_root中所有属性为QLabel的子控件
信号与槽机制
信号与槽是Qt中的核心机制,主要作用在于对象之间进行通讯
信号:当一个控件的状态发生改变时,向外界发出的信息
槽:一个执行某些操作的函数/方法
所有继承自QWidget的控件都支持“信号与槽”的机制
当信号发生时,连接的槽的函数会自动执行(QPushButton().pressed...)
信号可以是控件内置的,也可以是自定义的
槽函数可以是内置的,也可以是自定义的
连接方式: object.信号.connect(槽函数)
特性:
1.一个槽可以连接多个槽函数
2.一个信号也可以连接另外一个信号
3.信号的参数可以是任何Pythin类型
4.一个槽可以监听多个信号
信号与槽一些基本函数与作用
信号与槽的简单案例
类型判定
类型判定:API
对象删除:obj.deleteLater()
删除一个对象时,也会解除它与父对象之间的关系
deleteLater()并没有将对象立即销毁,而是向主消息循环发送了一个event,下一次主消息循环收到这个event后才会销毁对象。这样做的好处是可以在这些延迟删除的时间内完成一些操作,坏处就是内存释放会不及时。
对象删除举例
1.在print(obj1.children())时,仍有一个子类在里面,证明该函数不是立刻删除(区别于del,使用del时,由于引用的关系还在,并不能直接删除掉)
2.随后obj2和obj3依次被删除
3.在结束程序后,obj1也被释放掉
事件处理
1.事件机制
相比较于“信号与槽机制”:信号与槽机制是对事件机制的高级封装,事件机制更偏底层(远离用户)
0.用户的操作会产生各种事件消息
1.第一个接收到消息的时操作系统,操作系统会将消息分发到对应的应用程序“消息队列”中
一个应用程序会产生两个队列,分别存放系统产生的消息和程序内部产生的消息
1.不断的按顺序检测队列中是否有消息
2.如果发现“事件消息”,则会包装成“QEvent对象”进行分发处理
将事件接收者(receiver.)和事件对象(evt)传递给QApplication对象的notify(receiver,event)方法
分发给receiver对象的evt方法:此方法会根据event的事件类型,分发给receiver具体的事件函数
定时器
总结
QObject是所有的父类由于继承的关系,其他模块都含有QObject的特性和功能,想要学好其他模块就要先学好QObject。
PyQt5学习 (1)--对象的基本操作、QObject的更多相关文章
- JavaScript学习系列博客_14_JavaScript中对象的基本操作
对象的基本操作 - 创建对象 - 方式一:使用new关键字调用的函数,是构造函数(constructor),构造函数是专门用来创建对象的函数. var obj = new Object(); - 方式 ...
- vue学习之路 - 4.基本操作(下)
vue学习之路 - 4.基本操作(下) 简述:本章节主要介绍 vue 的一些其他常用指令. Vue 指令 这里将 vue 的指令分为系统内部指令(vue 自带指令)和用户自定义指令两种. 系统内部指令 ...
- JS — 对象的基本操作
JS面向对象系列教程 — 对象的基本操作 面向对象概述  面向对象(Object Oriented)简称OO,它是一种编程思维,用于指导我们如何应对各种复杂的开发场景. 这里说的对象(Object) ...
- JavaScript学习04 对象
JavaScript学习04 对象 默认对象 日期对象Date, 格式:日期对象名称=new Date([日期参数]) 日期参数: 1.省略(最常用): 2.英文-数值格式:月 日,公元年 [时:分: ...
- Javascript学习4 - 对象和数组
原文:Javascript学习4 - 对象和数组 在Javascript中,对象和数组是两种基本的数据类型,而且它们也是最重要的两种数据类型. 对象是已命名的值的一个集合,而数组是一种特殊对象,它就像 ...
- (58)Wangdao.com第九天_JavaScript 对象的基本操作
对象的基本操作 创建对象 var 对象名 = new Object(); // new 函数; 称为构造函数,专门用来创建对象的函数 var god = 给对象增加属性 删除对象 ...
- InfluxDB学习之InfluxDB的基本操作| Linux大学
来源地址:https://www.linuxdaxue.com/influxdb-study-series-manual.html 本文属于<InfluxDB系列教程>文章系列,该系列共包 ...
- Spring.NET依赖注入框架学习-- 泛型对象的创建和使用
Spring.NET依赖注入框架学习-- 泛型对象的创建和使用 泛型对象的创建方法和普通对象是一样的. 通过构造器创建泛型对象 下面是一个泛型类的代码: namespace GenericsPlay ...
- TortoiseGit学习系列之TortoiseGit基本操作拉取项目(图文详解)
前面博客 TortoiseGit学习系列之TortoiseGit基本操作克隆项目(图文详解) TortoiseGit学习系列之TortoiseGit基本操作修改提交项目(图文详解) TortoiseG ...
- TortoiseGit学习系列之TortoiseGit基本操作将提交到本地的项目推送到在线仓库(图文详解)
前面博客 TortoiseGit学习系列之TortoiseGit基本操作克隆项目(图文详解) TortoiseGit学习系列之TortoiseGit基本操作修改提交项目(图文详解) TortoiseG ...
随机推荐
- 百度地图api高亮显示指定区域,其余遮罩
先放一张最后的效果图 主要功能:只显示天府新区(双流区+龙泉驿区)这一块,其他的地方就用半透明的遮罩层盖住,然后用Markers标注出每个项目的所在地点,当鼠标悬浮在标注点的时候就显示出项目名称. h ...
- python:包含’e’和‘-’的 str 转 float
from functools import reduce def str2float(s): s = s.split('.') a = s[0] b = s[1] if a[0] == '-': a ...
- 获取客户端ip,请求头伪造ip,解决办法
可以在请求头加入 X-Forwarder-For 来伪造访问的ip地址 //Nginx支持X-Forwarded-For 配置 proxy_set_header X-Forwarded-For $pr ...
- Ajax属性
如何创建一个 Ajax <script> window.onload=function(){ 1)创建一个异步调用对象 va ...
- Javaheima21
Java 学习内容 XML XML解析技术 XPath 设计模式 在有些业务场景下,存储数据或者传输数据给别人的时候,数据需要满足优点的规范进行组织 XML文件存储的数据需要提取出来 如何方便的在XM ...
- python中的字符串/列表查找函数小总结
find()和index() 首先是适用情况, 'list' object has no attribute 'find' , list没有find方法, str全有. 返回的情况: 查找成功都会返回 ...
- 01 关于HTML基础-构建Web,这些你都知道吗?(很全)
以下均是参考MDN web docs,总结出来的比较重要的知识点,与君共勉.不妥之处,还望大家及时提出! 什么是HTML? 是一种告诉浏览器如何组织页面的标记语言.它由一系列元素组成. HTML元素 ...
- MQ(为什么要使用MQ)
为什么使用MQ? 个人认为主要由几下几点: 1.在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达数据库,直接导致无数的行锁表锁,甚至最 ...
- 如何用猿大师播放器在网页上同时播放20路以上海康威视高分辨率(1920*1080)摄像头RTSP视频流?
问: 同时播放分辨率为1920*1080的高清分辨率的摄像头视频流,找了很长时间试过无数方法均不能满足,服务器转码方案卡顿非常严重,几乎不能播放.了解到猿大师可以用到本机的硬件解码和加速,播放高清视频 ...
- Linux完全卸载mysql的方式
//rpm包安装方式卸载查包名:rpm -qa|grep -i mysql删除命令:rpm -e –nodeps 包名 //yum安装方式下载1.查看已安装的mysql命令:rpm -qa | gre ...