博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QtCore.QMetaObject.connectSlotsByName:根据objectName和signal自动绑定slot
阅读量:7070 次
发布时间:2019-06-28

本文共 2735 字,大约阅读时间需要 9 分钟。

 

 

from PyQt5.QtWidgets import (QWidget            , QVBoxLayout , QHBoxLayout,              QLineEdit, QPushButton)from PyQt5.QtCore import  pyqtSignalfrom PyQt5 import QtCore############################################### 参考大丸子的博客#http://jimmykuu.sinaapp.com/blog/11class LoginView(QWidget):        ## 登录界面时发送 关闭信号    quitSignal = pyqtSignal()    loginSignal = pyqtSignal(list)    # server端没有响应    openFailureSignal = pyqtSignal()                    def __init__(self, parent=None):        super(LoginView, self).__init__(parent)        self.ids_receive = []                self._init_ui()            def _init_ui(self):            layout_button = QHBoxLayout()               layout_input = QHBoxLayout()                       self.input_name = QLineEdit()        self.input_pass = QLineEdit()                        button_login =  QPushButton("登录")        button_login.setObjectName("ok_button")                button_quit  =  QPushButton("取消")        button_hello  =  QPushButton("hello")        self.button_hello = button_hello        button_hello.setObjectName("hello_button")        #button_login.clicked.connect(self.do_login)        #button_quit.clicked.connect(self.loginQuit)                layout_button.addWidget(button_login)        layout_button.addWidget(button_quit)                layout_input.addWidget(self.input_name)        layout_input.addWidget(self.input_pass)        layout_input.addWidget(self.button_hello)                  layout_main = QVBoxLayout()          self.setLayout(layout_main)        layout_main.addLayout(layout_button)        layout_main.addLayout(layout_input)           # QMetaObject. connectSlotsByName(QObject)        #网上百度到的说明:其作用是如其名称一样,用来将QObject 里的子孙QObject的某些信号按照其objectName连接到相应的槽上        #       ,如 button_hello.setObjectName("hello_button")        # 官网解释用法: http://doc.qt.io/qt-5/qmetaobject.html#connectSlotsByName        QtCore.QMetaObject.connectSlotsByName(self)         def loginQuit(self):        print ("cencel")        #试试注销掉该装饰器    # 有点奇怪啊,一旦注释掉装饰器,打印会执行两次啊    #QtCore.pyqtSlot(str, str)可以携带参数的    @QtCore.pyqtSlot()     def on_hello_button_clicked(self):           print('on_pbHello_clicked')           @QtCore.pyqtSlot()        def on_ok_button_clicked(self):        print ("OK")        self.loginSignal.emit([1, 2])                    def do_login(self):        #获取用户和密码文本框的内容        u_name = self.input_name.text()        u_pass =  self.input_pass.text()                       print('u_name', u_name, u_pass)                        if __name__ == '__main__':    import sys    from PyQt5.QtWidgets import QApplication    app = QApplication(sys.argv)        login = LoginView()    login.show()    sys.exit(app.exec_())

  

 

转载于:https://www.cnblogs.com/ribavnu/p/4893581.html

你可能感兴趣的文章
C语言中的结构体
查看>>
文本框只能输入数字
查看>>
netty实现TCP长连接
查看>>
[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2
查看>>
在Mysql中怎样返回一个数据库的所有表名,列名数据类型备注
查看>>
[转载] 信息系统项目管理师视频教程——12 项目整体管理
查看>>
XAML实例教程系列 - 类型转换器(Type Converter)
查看>>
LeetCode 50. Pow(x, n)
查看>>
Action的创建和配置
查看>>
checkAll全选的一个小例子
查看>>
【转】centos关机与重启命令详解
查看>>
17.元素分类
查看>>
C语言-堆和栈
查看>>
Spring 源码解析(六)创建bean实例
查看>>
ios-xml和json的解析
查看>>
Http报头Accept与Content-Type的区别
查看>>
分析Linux内核创建一个新进程的过程【转】
查看>>
快速排序(QuickSort)
查看>>
Java8之使用Optional进行Null处理
查看>>
jsckson,想说爱你不容易啊。。。406错误
查看>>