QWidget事件消息

1、用户操作界面时会产生特定的事件消息。

API:显示和关闭事件、移动事件、调整大小、鼠标事件、键盘事件、焦点事件、拖拽事件、绘制事件、改变事件、右键菜单、输入法。

应用场景:当一个控件被触发了一个特定的行为时,就会调用特定的方法,来将事件传递给开发人员,方便处理,重写这些事件方法,就可以监听相关的信息。

# 用户对界面产生的特定行为会被包装成一个事件消息,该事件消息会被传递给特定对象的特定方法
# 监听特定方法就需要自定义类,继承某一个特定的类别

显示和关闭事件:showEvent(QShowEvent)控件显示调用。

closeEvent(QCloseEvent)控件关闭时调用。

移动事件:moveEvent(QMoveEvent)控件移动时调用。

调整大小:resizeEvent(QResizeEvent)控件调整大小时使用。

鼠标事件:鼠标进入时和鼠标离开时触发。(鼠标的所有操作必须都在控件范围之内,否则无法触发消息)

QWidget事件消息_第1张图片

 键盘事件:当用户点击某一个键就会自动调用该事件方法。

 焦点事件:某个控件获取相应的焦点,获取焦点当用户通过键盘输入的内容就会跑到对应的获取焦点的控件里。(关注的那个事件)

 拖拽事件:上传文件 等

QWidget事件消息_第2张图片

绘制事件:能看到控件主要是因为绘制事件操作。可以自定义控件。 

改变事件:窗体改变、字体、语言(中英文调换)改变等。

 右键菜单:右键弹出菜单,可以设置菜单中的内容。

 输入法:关于输入法的操作。

from PyQt5.Qt import *
import sys

# 用户对界面产生的特定行为会被包装成一个事件消息,该事件消息会被传递给特定对象的特定方法
# 监听特定方法就需要自定义类,继承某一个特定的类别

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("消息时间机制")
        self.resize(500, 500)
        self.setup_ui()

    # 在这里设置子控件
    def setup_ui(self):
        pass

    # 显示关闭事件
    # 在每个事件方法中都会把相关的事件传递给我们
    def showEvent(self, QshowEvent):
        print("窗口被展示出来")

    def closeEvent(self, QCloseEvent):
        print("窗口被关闭了")

    # 未移动之前会打印两遍,是因为展示时,系统需要将窗口摆放在正确位置,所以会移动
    def moveEvent(self, QMoveEvent):
        print("窗口被移动了")

    # 一开始展示窗口,肯定会有个尺寸调整大小,会触发该事件
    def resizeEvent(self, QResize):
        print("窗口改变了尺寸大小")

    def enterEvent(self, QEvent):
        print("鼠标进来了")
        self.setStyleSheet("background-color:cyan")

    def leaveEvent(self, QEvent):
        print("鼠标离开了")
        self.setStyleSheet("background-color:green")

    def mousePressEvent(self, QMouseEvent):
        print("鼠标被按下")

    def mouseReleaseEvent(self, QMouseEvent):
        print("鼠标被释放")

    def mouseDoubleClickEvent(self, QMouseEvent):
        print("鼠标双击")

    def mouseMoveEvent(self, QMouseEvent):
        print("鼠标移动了")

    def keyPressEvent(self, QKeyEvent):
        print("键盘上某一个键被按下了")

    def keyReleaseEvent(self, QKeyEvent):
        print("键盘上某一个键被释放了")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()

    sys.exit(app.exec_())

你可能感兴趣的:(QT学习,qt)