资料

  1. PyQt5图形界面编程
  2. PyQt5指南

模块

PyQt5本身拥有超过620个类和6000函数及方法。

  1. QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的 time、文件、目录、数据类型、文本流、链接、mime、线程或进程等对象。
  2. QtWidgets模块包含了一整套UI元素组件,用于建立符合系统风格的classic界面。
  3. QtGui模块涵盖多种基本图形功能的类; 包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面 和字体文本。

信号和插槽

信号和槽是用来在对象间传递数据的方法:当一个特定事件发生的时候,signal会被发射出来,和信号连接的slot会被调用。连接信号和槽的语法为SenderObject.signal.connect(ReceiverObject.Slot)

很多GUI编程使用的是回调机制,而PyQt5具有独特的信号和插槽机制来处理事件。。在编写一个类时,要先定义该类的信号与槽,在类中信号与槽进行连接,实现对象之间的数据传输,信号发出的参数个数一定要大于槽函数接收的参数个数。

特点

  1. 一个信号可以连接多个槽。
  2. 一个信号可以连接另一个信号。
  3. 信号参数可以是任何Python类型。
  4. 一个槽可以监听多个信号。
  5. 信号与槽的连接方式可以是同步连接,也可以是异步连接。
  6. 信号与槽的连接可能会跨线程。
  7. 信号可能会断开。

定义新的信号:使用pyqtSignal()方法,新的信号作为类的属性。

#示例
class MyWidget(QWidget):
#定义信号
Signal1 = pyqtSignal() # 无参数的信号
Signal2 = pyqtSignal(int) # 带一个参数(整数)的信号
Signal3= pyqtSignal(int,str) # 带两个参数(整数,字符串)的信号 def __init__(self,parent=None):
super(CustSignal,self).__init__(parent) #将信号连接到指定槽函数
self.Signal1.connect(self.signalCall1)
self.Signal2.connect(self.signalCall2)
self.Signal3.connect(self.signalCall3) #实现槽函数
def signalCall1(self):
print("signal1 emit") def signalCall2(self,val):
print("signal2 emit,value:",val) def signalCall3(self,val,text):
print("signal3 emit,value:",val,text) def mousePressEvent(self, e):
#重写点击事件 发射信号
self.Signal1.emit()
self.Signal2.emit(1)
self.Signal3.emit(1,"text")

给槽函数传递数据

sender()方法确定信号源https://zhuanlan.zhihu.com/p/28415799

#在槽中
def buttonclicked(self):
computer = randint(1,3)
player = 0
sender = self.sender()
if sender.text() == '剪刀':
player = 1
elif sender.text() == '石头':
player = 2
else:
player = 3

自定义参数的传递:使用lambda表达式https://blog.csdn.net/broadview2006/article/details/80132757

        button1.clicked.connect(lambda: self.onButtonClick(1))
button2.clicked.connect(lambda: self.onButtonClick(2))

pyqt笔记1模块 信号和插槽的更多相关文章

  1. APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause

    转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...

  2. 转载:pyqt线程间通过 信号/槽 通信

    转自:http://blog.sina.com.cn/s/blog_613d5bb701016qzv.html 信号(singal)与槽(slot)用于对象相互通信,信号:当某个对象的某个事件发生时, ...

  3. Python学习笔记—itertools模块

    这篇是看wklken的<Python进阶-Itertools模块小结> 学习itertools模块的学习笔记 在看itertools中各函数的源代码时,刚开始还比较轻松,但后面看起来就比较 ...

  4. angular2 学习笔记 ( ngModule 模块 )

    2016-08-25, 当前版本是 RC 5. 参考 : https://angular.cn/docs/ts/latest/guide/ngmodule.html 提醒 : 这系列笔记的 " ...

  5. python学习笔记_week5_模块

    模块 一.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), 本质就是.py结尾的python文件(文件名:test.py,对应模块名:test) 包:用来从逻辑上 ...

  6. PyQt 5事件和信号

    信号槽Signals & slots sld.valueChanged.connect(lcd.display) # 将滚动条的valueChanged信号连接到lcd的display插槽 # ...

  7. python自动化测试学习笔记-6urllib模块&request模块

    python3的urllib 模块提供了获取页面的功能. urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capat ...

  8. Python学习笔记之模块与包

    一.模块 1.模块的概念 模块这一概念很大程度上是为了解决代码的可重用性而出现的,其实这一概念并没有多复杂,简单来说不过是一个后缀为 .py 的 Python 文件而已 例如,我在某个工作中经常需要打 ...

  9. [ PyQt入门教程 ] PyQt5信号与槽

    信号和槽是PyQt编程对象之间进行通信的机制.每个继承自QWideget的控件都支持信号与槽机制.信号发射时(发送请求),连接的槽函数就会自动执行(针对请求进行处理).本文主要讲述信号和槽最基本.最经 ...

随机推荐

  1. KKT条件原理

    问题引入 max f(x, y) s.t. g(x,y) <= 0 几何解释 a.  g(x ,y) <= 0为上图中z = 0平面中的圆,圆的边表示g(x, y) = 0,圆的内部表示g ...

  2. linux常用命令:rm 命令

    昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所 ...

  3. 世界最顶级邮件服务器组合Linux + PMTA + OEMPRO,PowerMTA 安装

    世界最顶级邮件服务器组合Linux + PMTA + OEMPRO PowerMTA 安装 PMTA + OEMPRO  这个是发送的组合 PMTA提供的SMTP,OEMPRO是订阅管理以及邮件的过滤 ...

  4. Kali linux apt-get update 失败,无release……(最有效)

    设置源 编辑 /etc/apt/sources.list nano /etc/apt/sources.list 清空文件内所有内容后添加 deb http://mirrors.ustc.edu.cn/ ...

  5. 第二节 JavaScript基础

    JavaScript组成及其兼容性: ECMAScript:解释器,翻译,用于实现机器语言和高级语言的翻译器:几乎没有兼容性问题 DOM(Document Object Model):文档对象模型,文 ...

  6. 判断闰年C语言版

    #include<stdio.h> int isLeap(int year) { // 必须先判断是平年的情况 后判断闰年的情况 == && year%!=) || yea ...

  7. 在static的function静态函数中访问成员变量

    class A{ private $url; public function __construct(){ $this->url = $_SERVER['PATCH_INFO']; } publ ...

  8. Python3 解析excel文件

    Python3 解析读取excel文件 一.第三方库 import xlrd 二.代码示例 import xlrd ''' 读取Excel每个sheet的第一列和第二列的值,拼接成json串,写入文件 ...

  9. oracle 12cR2 smart flash cache实测

    最近一直在处理新系统的性能优化问题,这两天特地测试了下oracle 11gR2开始引入的smart flash cache. 其介绍参考MOS文档,How To Size the Database S ...

  10. Deep Learning for NLP

    Deep Learning for NLP The First Paper Proposed Bi-LSTM+CRF 我认为,第一篇提出 Bi-LSTM+CRF 架构的文章是: Huang Z, Xu ...