博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt5事件和信号
阅读量:3899 次
发布时间:2019-05-23

本文共 2136 字,大约阅读时间需要 7 分钟。

在事件模型,有三个参与者

事件源
事件对象
事件目标
PyQt5有一个独一无二的信号和槽机制来处理事件。信号和槽用于对象之间的通信。当指定事件发生,一个事件信号会被发射。槽可以被任何Python脚本调用。当和槽连接的信号被发射时,槽会被调用。

import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import (QWidget, QLCDNumber, QSlider,                             QVBoxLayout, QApplication)class Example(QWidget):    def __init__(self):        super().__init__()        self.initUI()    def initUI(self):        lcd = QLCDNumber(self)        sld = QSlider(Qt.Horizontal, self)        vbox = QVBoxLayout()        vbox.addWidget(lcd)        vbox.addWidget(sld)        self.setLayout(vbox)        #连接lcd        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_())

在这里插入图片描述

按ESC键退出

import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import QWidget, QApplicationclass 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_())

触发事件

import sysfrom PyQt5.QtWidgets import QMainWindow, QPushButton, QApplicationclass Example(QMainWindow):    def __init__(self):        super().__init__()        self.initUI()    def initUI(self):        btn1 = QPushButton("Button 1", self)        btn1.move(30, 50)        btn2 = QPushButton("Button 2", self)        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()        self.statusBar().showMessage(sender.text() + ' was pressed')if __name__ == '__main__':    app = QApplication(sys.argv)    ex = Example()    sys.exit(app.exec_())

在这里插入图片描述

转载地址:http://maben.baihongyu.com/

你可能感兴趣的文章
php面试可能会被问道的技术题汇总
查看>>
php面试题1-线程和进程的区别(顺带提下协程)
查看>>
php面试题2-用到过的传输协议
查看>>
php面试题3-yii2和yii的不一样的地方
查看>>
IOS 一些好的框架和 技术大牛的博客
查看>>
Java 和 Object-c的区别
查看>>
Windows环境下Android NDK环境搭建
查看>>
NDK Build 用法(NDK Build)
查看>>
Android NDK开发起步Hello Jni
查看>>
[已解决]AutoCompleteTextView 不显示匹配的内容,因为将空的内容添加进去了
查看>>
object c的浅拷贝(地址拷贝)和深拷贝(对象拷贝)
查看>>
object c son字符串的解析
查看>>
object c 非常强大的类的属性复制kcv键值码赋值
查看>>
Java中普通代码块,构造代码块,静态代码块区别及代码示例
查看>>
iOS 第4课 UILabel
查看>>
[已解决]junit.framework.AssertionFailedError: No tests found in
查看>>
“服务器端跳转”和“客户端跳转”的区别
查看>>
Datatables基本初始化——jQuery表格插件
查看>>
Servlet监听器——实现在线登录人数统计小例子
查看>>
Oracle笔记——简单查询语句 Oracle入门
查看>>