self.show()
def showMsg(self):
sender = self.sender() # 获取信号是由哪个控件发出的,可以获取到btn1或btn2
QMessageBox.information(self, '提示信息', f'{sender.text()}被按下。')
if name == ‘main’:
app = QApplication(sys.argv)
ex = MainWindow()
sys.exit(app.exec_())
[](https://gitee.com/vip204888/java-p7)重写keyPressEvent - Esc关闭窗口
--------------------------------------------------------------------------------------------
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210401000418742.png)
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication
class Widget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 360, 130) # (pos_x, pos_y, width, height)
self.setWindowTitle('按Esc键关闭窗口')
self.show()
# 重写了键盘事件处理器
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
if name == ‘main’:
app = QApplication(sys.argv)
w = Widget()
sys.exit(app.exec_())
[](https://gitee.com/vip204888/java-p7)内置槽函数 - 滚动条控制LCD
-----------------------------------------------------------------------------------
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210401001018955.png)
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QLCDNumber, QSlider, QVBoxLayout, QApplication
class Widget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个QLCDNumber控件,QLCDNumber用于显示一个带有仿真显示屏效果的数字
lcd = QLCDNumber(self)
# 创建一个QSlider控件,QSlider提供了一个水平或垂直滑动条
sld = QSlider(Qt.Horizontal, self)
vbox = QVBoxLayout()
vbox.addWidget(lcd)
vbox.addWidget(sld)
self.setLayout(vbox)
# 将滑动条的valueChanged信号与LCD的display槽函数连接
sld.valueChanged.connect(lcd.display)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('LCD显示')
self.show()
if name == ‘main’:
app = QApplication(sys.argv)
w = Widget()
sys.exit(app.exec_())
[](https://gitee.com/vip204888/java-p7)自定义信号
------------------------------------------------------------------------
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210401000959676.png)
自定义信号方法一:自定义信号类继承`QObject`
import sys
from PyQt5.QtCore import pyqtSignal, QObject
from PyQt5.QtWidgets import QMainWindow, QApplication
class MySignal(QObject): # 自定义信号需要继承QObject
sigClose = pyqtSignal()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.sig = MySignal():
self.sig.sigClose.connect(self.close) # 将sig的sigClose信号与窗口的close()槽函数连接
self.setGeometry(300, 300, 320, 150)
self.setWindowTitle('单击鼠标关闭')
self.show()
# 重写mousePressEvent事件处理器,该处理器在鼠标按下时触发
def mousePressEvent(self, event):
self.sig.sigClose.emit() # 将sig的sigClose信号发出,会调用与之连接的close()槽函数
# self.close()
if name == ‘main’:
app = QApplication(sys.argv)
w = MainWindow ()
sys.exit(app.exec_())
自定义信号方法二:直接在`MainWindow`类中定义信号属性,不需要专门定义一个类
import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QMainWindow, QApplication
class MainWindow(QMainWindow):
# 直接在MainWindow类中定义信号属性,不需要专门定义一个类
sigClose = pyqtSignal()
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 将sigClose信号与窗口的close()槽函数连接
self.sigClose.connect(self.close)
self.setGeometry(300, 300, 320, 150)
self.setWindowTitle('单击鼠标关闭')
self.show()
def mousePressEvent(self, event):
self.sigClose.emit()
if name == ‘main’:
app = QApplication(sys.argv)
w = MainWindow ()
sys.exit(app.exec_())
[](https://gitee.com/vip204888/java-p7)事件对象、重写mouseMoveEvent
----------------------------------------------------------------------------------------
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210401001152477.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_1,color_FFFFFF,t_70)
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QLabel
class Widget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# QLabel控件用于显示文本
self.label = QLabel("x: 0, y: 0 ", self)
self.label.move(10, 10)
# 鼠标指针移动可能会触发鼠标移动事件,该事件如果开启会被频繁触发,默认是不开启的
self.setMouseTracking(True)
self.setGeometry(300, 300, 350, 200)
self.setWindowTitle('事