PyQt的signal 和 solit的补充

简介:   from PyQt5.QtWidgets import (QWidget , QVBoxLayout , QHBoxLayout, QLineEdit, QPushButton) from PyQt5.

 

 

from PyQt5.QtWidgets import (QWidget
            , QVBoxLayout , QHBoxLayout, 
             QLineEdit, QPushButton)

from PyQt5.QtCore import  pyqtSignal
from PyQt5 import QtCore
##############################################

# 参考大丸子的博客
#http://jimmykuu.sinaapp.com/blog/11






class 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_())

  

 

相关文章
|
10月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
1049 20
|
Python
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
本文提供了一份详细的PySide6与VSCode联动的操作指南,包括安装配置VSCode、安装必要的扩展、配置扩展以及编辑和运行PySide6项目。文中还提到了相关工具如uic.exe、rcc.exe和designer.exe的用途,并提供了进一步学习的资源。
2389 1
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
1107 7
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
1823 1
|
XML JSON Ubuntu
Python实用记录(十五):PyQt/PySide6打包成exe,精简版(nuitka/pyinstaller/auto-py-to-exe)
本文介绍了使用Nuitka、PyInstaller和auto-py-to-exe三种工具将Python的PyQt/PySide6应用打包成exe文件的方法。提供了详细的安装步骤、打包命令和参数说明,适合新手学习和实践。
6151 0
|
数据可视化 Linux API
Tkinter与PyQt的对比
【8月更文挑战第3天】本文对比了Python中两大GUI工具包Tkinter与PyQt。Tkinter作为Python标准库的一部分,易于学习且轻量级,适合快速开发简单的跨平台GUI应用。PyQt功能强大且灵活,支持复杂应用的开发,更适合有经验的开发者。通过示例代码展示了如何使用这两种工具包创建基本的GUI应用及图像查看器,帮助读者理解它们的不同之处。选择哪个工具包取决于项目的具体需求、开发者的经验以及对功能和性能的要求。
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
Python的`signal`模块提供了访问底层操作系统提供的信号机制的方式。信号是操作系统用来通知进程发生了某种情况(如用户按下Ctrl+C)的一种机制。
|
Python
PyQt学习------PyQt自定义信号
PyQt学习------PyQt自定义信号
303 0

推荐镜像

更多