pyqt5学习(四)事件和信号

时间:2021-02-21 23:01:55

顾名思义:事件就是执行的东西,信号就和触发类似吧,是一种动作

QLCDNumber类:类似于QLable是一种显示标签,一般好像多用于显示时间

QSlider类:滑动条类

QtCore:包含了核心的非GUI的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime类文件、进程与线程一起使用。

# -*- coding=utf-8 -*-
from PyQt5.QtWidgets import QWidget,QApplication,QLCDNumber,QSlider,QVBoxLayout
from PyQt5.QtCore import Qt
import sys
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) #固定布局
sld.valueChanged.connect(lcd.display)#将水平拖动条的变化和数字连接起来

self.setGeometry(300,300,300,300)
self.setWindowTitle(u'宋存最美')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
预览图:

pyqt5学习(四)事件和信号

2.重构事件处理器

# -*- 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):#接受一个事件e

if e.key() == Qt.Key_Escape: #如果e的键值为ESC,则关闭
self.close()


if __name__ == '__main__':

app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

3.事件发送

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QWidget, QApplication,QPushButton,QMainWindow

class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
btn1 = QPushButton('Button1',self) #创建self
btn1.move(30, 50)
btn2 = QPushButton('Button2',self)
btn2.move(150, 50)

btn1.clicked.connect(self.buttonClicked)
btn2.clicked.connect(self.buttonClicked)
self.statusBar()

self.setGeometry(300,300,300,300)
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_())