zoukankan      html  css  js  c++  java
  • 【PyQt5】信号与槽+装饰器定义槽函数

    5、使用装饰器定义信号和槽函数

    使用方法:

    @PyQt5.QtCore.pyqtSlot(参数)

    def on_发送者对象名称_发射信号名称(self,参数):

      pass

    使用方法有效的前提是下面函数执行的情况下:

    QMetaObject.connectSlotsByName(QObecjt)

    案例:

     1 from PyQt5 import QtCore
     2 from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton
     3 import sys
     4 
     5 class CustWidget(QWidget):
     6     def __init__(self, parent = None):
     7         super(CustWidget,self).__init__(parent)
     8 
     9         self.okButton = QPushButton('OK', self)
    10         # 使用setObjectName函数设置对象的名字,newButton 后面要用到
    11         self.okButton.setObjectName('newButton')
    12         layout = QHBoxLayout()
    13         layout.addWidget(self.okButton)
    14         self.setLayout(layout)
    15         QtCore.QMetaObject.connectSlotsByName(self)
    16 
    17     @QtCore.pyqtSlot()
    18     def on_newButton_clicked(self):
    19         print('单击了OK按钮')
    20 
    21     #     self.okButton.clicked.connect(self.newButton_clicked)
    22     #
    23     # def newButton_clicked(self):
    24     #     print('单击了OK按钮')
    25 
    26 if __name__ == '__main__':
    27     app = QApplication(sys.argv)
    28     win = CustWidget()
    29     win.show()
    30     app.exec_()
    31     # sys.exit(app.exec_())

     下面这段代码的核心就是QtCore.QMetaObject.connectSlotsByName(self)

         QtCore.QMetaObject.connectSlotsByName(self)
     
         @QtCore.pyqtSlot()
         def on_newButton_clicked(self):
             print('单击了OK按钮')

    与下面的写法效果一样:

    #     self.okButton.clicked.connect(self.newButton_clicked)## def newButton_clicked(self):#     print('单击了OK按钮')
    如果只写一两个槽函数可能不觉得,如果多了 这句话就可以省很多事。而且结构上会更清晰。
  • 相关阅读:
    Net包管理NuGet(3)搭建私服及引用私服的包
    MyMql 下载以及配置
    Oracle 环境部署 以及数据库创建 ,用户新建和权限分配
    VUE.JS 环境配置
    .NET WEB API 简单搭建
    C# Timer 定时任务
    RemoTing 搭建简单实现
    MVC+EF三层+抽象工厂
    ASP.NET MVC SignalR 简单聊天推送笔记
    .net Mvc Dapper 方法封装
  • 原文地址:https://www.cnblogs.com/watalo/p/12295734.html
Copyright © 2011-2022 走看看