PyQt 5事件和信号
信号槽Signals & slots
sld.valueChanged.connect(lcd.display)
# 将滚动条的valueChanged信号连接到lcd的display插槽
# Author:凌逆战
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QLCDNumber, QSlider, QVBoxLayout, QApplication class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI() def initUI(self):
lcd = QLCDNumber(self) # 创建一个lcd显示屏对象
sld = QSlider(Qt.Horizontal, self) #创建一个水平的滑块 vbox = QVBoxLayout() # 创建垂直布局
vbox.addWidget(lcd) # 在垂直布局中添加lcd显示屏
vbox.addWidget(sld) # 在垂直布局中添加水平滑块 self.setLayout(vbox) # 设置垂直布局
# 将滑块的valueChanged信号连接到lcd的display插槽
sld.valueChanged.connect(lcd.display) self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Signal & slot')
self.show() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
重新实现事件处理器
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
# 重新实现了keyPressEvent()事件处理器
# 键盘按下Escape键会使程序退出
# Author:凌逆战
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI() def initUI(self):
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Event handler')
self.show() def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
重新实现事件处理器
事件发送者
btn1.clicked.connect(self.buttonClicked)
btn2.clicked.connect(self.buttonClicked)
# 两个按钮绑定到同一个插槽
def buttonClicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + ' was pressed')
# 通过调用sender()方法来判断信号源, 并将其名称显示在窗体的状态栏中。
# Author:凌逆战
# -*- coding:utf-8 -*-
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI() def initUI(self):
btn1 = QPushButton("Button 1", self) # 按钮一Button1
btn1.move(30, 50) btn2 = QPushButton("Button 2", self) # 按钮二Button2
btn2.move(150, 50)
# 两个按钮绑定到一个插槽
btn1.clicked.connect(self.buttonClicked) # 按钮一绑定事件
btn2.clicked.connect(self.buttonClicked) # 按钮二绑定事件 self.statusBar() # 创建一个状态栏 self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Event sender')
self.show() def buttonClicked(self):
sender = self.sender() # 通过调用sender()方法来判断信号源
self.statusBar().showMessage(sender.text() + ' was pressed') if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
事件发送者

发出信号
class Communicate(QObject):
closeApp = pyqtSignal()
# 创建了一个名为closeApp的信号
self.c = Communicate()
self.c.closeApp.connect(self.close)
# 自定义closeApp信号连接到QMainWindow的close槽
def mousePressEvent(self, event):
self.c.closeApp.emit()
# 当在窗体上点击鼠标时会触发closeApp信号,使程序退出。
# Author:凌逆战
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtCore import pyqtSignal, QObject
from PyQt5.QtWidgets import QMainWindow, QApplication
# 创建一个closeAPP信号
class Communicate(QObject):
closeApp = pyqtSignal() class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI() def initUI(self):
self.c = Communicate()
self.c.closeApp.connect(self.close) # 自定义closeAPP信号连接到QMainWindow的close槽 self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Emit signal')
self.show()
# 重写mousePressEvent函数
# 当在窗体上点击鼠标时会触发closeAPP信号,是程序退出
def mousePressEvent(self, event):
self.c.closeApp.emit() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
点击鼠标,退出窗口
PyQt 5事件和信号的更多相关文章
- Python pyQt4/PyQt5 学习笔记4(事件和信号)
信号 & 槽 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QWidget,QLCDNumber,QS ...
- PyQt5教程——事件和信号(5)
PyQt5中的事件和信号 在这部分PyQt5编程教程中,我们探索应用中事件和信号的发生. 事件 所有的GUI应用都是事件驱动的.事件主要由应用的用户操作产生的.但是事件可能由其他条件触发,比如:一个网 ...
- Qt事件和信号的区别 .
仔细来看,事件与信号其实并无多大差别,从我们对其需求上来说,都只要能注册事件或信号响应函数,在事件或信号产生时能够被通知到即可.但有一项区别在于,事件处理函数的返回值是有意义的,我们要根据这个返回值来 ...
- pyqt笔记1模块 信号和插槽
资料 PyQt5图形界面编程 PyQt5指南 模块 PyQt5本身拥有超过620个类和6000函数及方法. QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的 time.文件 ...
- Qt事件机制---信号通过事件实现,事件可以过滤,事件更底层,事件是基础,信号是扩展。
转:http://www.cnblogs.com/findumars/p/8001484.html Qt事件机制(是动作发生后,一种通知对象的消息,是被动与主动的总和.先处理自己队列中的消息,然后再处 ...
- Pyqt 控件的信号槽事件定义方法
转载来自:http://my.oschina.net/midnite/blog/39399 Qt采用信号槽来设定UI界面上元素动作的事件绑定.自Qt4.5开始,引入了一个新的信号槽与事件绑定的方法.界 ...
- pyqt重写键盘事件+获取信号发送对象
# _*_ coding:utf-8 _*_ import sys from PyQt4 import QtGui,QtCore class Example(QtGui.QMainWindow): d ...
- PyQt4学习记录之事件和信号
事件是任何 GUI程序中很重要的部分.所有 Python GUI 应用都是事件驱动的.一个应用对其生命期产生的不同的事件类型做出反应.事件是主要由应用的用户产生.但是,也可以通过其他方法产生,比如,网 ...
- PyQt4学习笔记2:事件和信号
事件是任何 GUI 程序中很重要的部分.所有 GUI 应用都是事件驱动的.一个应用对其生命期产生的不同的事件类型做出反应.事件是主要由应用的用户产生.但是,也可以通过其他方法产生,比如,网络通信,窗口 ...
随机推荐
- python中sort()与sorted()的区别
Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列 一,最简单的排序 1.使用sort排序 my_list = [3 ...
- [转载]面试心得与总结---BAT、网易、蘑菇街等
转载自:http://mp.weixin.qq.com/s?__biz=MzIzMDIxNTQ3NA==&mid=2649111851&idx=1&sn=f43c42f7262 ...
- LINUX中的DNS服务---高速缓存DNS
一.什么是DNS Domain Name System,域名系统. 万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网.他主要负责把域名和IP的相互转换 ...
- VS2010上写QT代码,但是显示不出来QString的值-解决办法
我的配置是vs2010和qt,debug下看不到 QString的值 根据 http://www.cnblogs.com/russinovich/archive/2012/06/29/2569898. ...
- SpringMVC札集(03)——基于注解的SpringMVC入门完整详细示例
自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...
- HAWQ + MADlib 玩转数据挖掘之(五)——奇异值分解实现推荐算法
一.奇异值分解简介 奇异值分解简称SVD(singular value decomposition),可以理解为:将一个比较复杂的矩阵用更小更简单的三个子矩阵的相乘来表示,这三个小矩阵描述了大矩阵重要 ...
- 余弦相似度及基于python的三种代码实现、与欧氏距离的区别
1.余弦相似度可用来计算两个向量的相似程度 对于如何计算两个向量的相似程度问题,可以把这它们想象成空间中的两条线段,都是从原点([0, 0, ...])出发,指向不同的方向.两条线段之间形成一个夹角, ...
- iOS常识名词解释 2016/04/05
Bundle : http://www.cnblogs.com/BigPolarBear/archive/2012/03/28/2421802.html http://blog.sina.com.cn ...
- java面试题08
1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1;编译时错误.对于shor ...
- SEO方案
前端需要注意哪些SEO 合理的title.description.keywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title要有 ...