前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PySide6 GUI 编程(4):使用 Slot 装饰器定义槽函数

PySide6 GUI 编程(4):使用 Slot 装饰器定义槽函数

原创
作者头像
bowenerchen
发布2024-05-20 19:42:43
1840
发布2024-05-20 19:42:43
举报
文章被收录于专栏:编码视界编码视界

Slot函数的另一种写法

代码语言:python
复制
import time

from PySide6.QtCore import Slot
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton


@Slot()
def onPressed():
    print('按钮被按下', time.time())


@Slot()
def onReleased():
    print('按钮被释放', time.time())


@Slot()
def onClicked():
    print('按钮被点击(动作已完成)', time.time())


class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        button = QPushButton('按钮', self)
        """
        在Qt(包括PySide6)中,在同一个线程中的连接,当一个信号连接到多个槽函数时,槽函数的执行顺序通常是按照它们被连接到信号上的顺序
        """
        button.pressed.connect(onPressed)
        button.pressed.connect(self.after_pressed)
        button.released.connect(onReleased)
        button.clicked.connect(onClicked)

    @Slot()
    def after_pressed(self):
        """
            Slot Function也可以被定义在成员函数里面

            使用@Slot()装饰器可以显式地将其标记为槽可以避免在运行时进行额外的类型检查
            使用@Slot()装饰器可以帮助Qt的元对象系统更准确地处理信号和槽的连接,减少潜在的错误
            @Slot()装饰器提供了清晰的意图表达,让其他开发者知道这个函数是被设计为信号和槽机制的一部分

            如果不使用@Slot()装饰器,Qt在创建连接时会将方法添加到类的元对象(QMetaObject)中,这可能会增加一些运行时开销
        """
        print('button pressed', time.time())


if __name__ == '__main__':
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()
使用 Slot 装饰器定义的槽函数
使用 Slot 装饰器定义的槽函数

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Slot函数的另一种写法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档