资料

  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. 爬虫万金油,一鹅在手,抓遍全球:goose 简介!

    GOOSE 现已弃用 经过多年的服务,GOOSE接口和支持它的MySQL数据现已弃用 . 在我们进行替换的同时,我们建议寻找一般查询功能的用户在http://rdf.geneontology.org上 ...

  2. redis和mongodb的比较

    >>RedisRedis的优点:支持多种数据结构,如 string(字符串). list(双向链表).dict(hash表).set(集合).zset(排序set).hyperloglog ...

  3. hihoCoder #1106 : Koch Snowflake 微软苏州校招笔试(1月17日)

    描述 Koch Snowflake is one of the most famous factal. It is built by starting with an equilateral tria ...

  4. glog日志库移植Android平台

    1.在linux平台下使用ndk交叉编译链编译glog生成libglog.a静态库. 2.将生成的库文件与头文件放到Android项目中,使用JNI方法调用. 3.编译遇到错误“stderr.stdo ...

  5. GoldenGate实时投递数据到大数据平台(1)-MongoDB

    mongodb安装 安装 linux下可使用apt-get install mongodb-server 或 yum install mongodb-server 进行安装. 也可以在windows上 ...

  6. hibernate自动创建表报表不存在

    在hibernate.cfg.xml配置了<property name="hibernate.hbm2ddl.auto">update</property> ...

  7. 每日linux命令学习-历史指令查询(history、fc、alias)

    linux历史机制对命令行中输入的命令进行编号并依此保存,以维护命令历史.登录会话期间输入的命令保存在shell内存中,若终止命令则添加至历史文件. 1. 箭头符号方向键 使用键盘上的箭头方向键可以从 ...

  8. MyEclipse/Eclipse快捷键总结

    MyEclipse/Eclipse快捷键 查找某个方法被谁调用:选中方法名,ctrl+shift+g 通过文件名称查找类或文件:ctrl+shift+r(Open Resource)

  9. PyTorch 中,nn 与 nn.functional 有什么区别?

    作者:infiniteft链接:https://www.zhihu.com/question/66782101/answer/579393790来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

  10. Vue小案例 之 商品管理------为之前的页面修改样式

    最终修改的页面效果: 修改的css: <style> #container{ margin: auto; text-align: center; width: 1000px; border ...