打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PyQt5 GUI应用程序工具包入门(3)—信号槽

上一讲,我们编制了一个简单的登录对话框。而真正的登录对话框需要将输入的用户名和密码发送出去,进行处理。PyQt通过信号(signal)和槽(slot)机制实现对象间的通信。具体方法为:由一个事件(如:单击控件)触发信号,槽函数接收到信号便自动执行。

QtDesigner中定义

定义内置信号槽


图1 QtDesigner中的信号槽定义

图1中,蓝色箭头的窗口中显示已有的信号槽,由于现在我们还没编辑任何信号槽,故此窗口中没有任何信号槽的定义。
单击图1中红色箭头所指的按钮即可进入信号槽编辑模式。即可定义信号槽。

图2 定义信号槽

进入信号槽编辑模式后,将鼠标从取消拖动到窗口的空白位置(如图2所示),松开鼠标,即弹出信号槽配置连接对话框(如图3所示)。

图3 信号槽配置连接对话框

将 “显示从QWidget继承的信号和槽选中”,即可显示所有的信号和槽。这里我们要使“取消”键按下时,窗口关闭。故左边的信号选择“clicked()”,右边的槽选择“close()”,单击确定,即可定义好“取消”按钮的信号槽。并显示在了信号/槽编辑器里(如图4所示)。

图4 信号槽配置效果

当然,我们也可以单击“信号/槽编辑器”中的+号直接添加信号槽选择发送控件、信号函数、接收控件和槽函数。

定义自定义信号槽

在本例中,单击确定键,槽函数需要将用户名和密码发送出去,故只能用自定义槽函数。和上一节一样进入信号槽编辑模式,通过拖动建立槽函数。然后在图3所示的信号槽配置连接对话框中单击“编辑”即进入如图5所示的自定义信号槽对话框。单击+号即可增加一个槽函数。然后在生成之后,在代码中定义相应的函数。


图5 自定义信号槽对话框

手写定义槽函数

手写定义槽函数非常简单,语法为:

  1. 发送者控件.信号函数.connect(槽函数)

例(取消键的信号槽函数):

  1. self.pushButton_2.clicked.connect(Form.close)

书写自定义函数时,只需在Ui_Form类中,定义一个自定义函数即可。我们将上一节的对话框,扩展如下:

  1. # -*- coding: utf-8 -*-

  2. from PyQt5.QtWidgets import QWidget,QFormLayout,QLabel,QLineEdit,QPushButton

  3. class Ui_Form(QWidget):

  4.    def __init__(self):

  5.        super().__init__()

  6.        self.setWindowTitle('登录界面')

  7.        self.resize(200,100)

  8.        lay=QFormLayout()

  9.        Lab1=QLabel('用户名')

  10.        self.Line1=QLineEdit()

  11.        lay.addRow(Lab1,self.Line1)

  12.        Lab2 = QLabel('密码')

  13.        self.Line2 = QLineEdit()

  14.        lay.addRow(Lab2, self.Line2)

  15.        OkB=QPushButton('确定')

  16.        CB=QPushButton('取消')

  17.        lay.addRow(OkB,CB)

  18.        self.setLayout(lay)

  19.        CB.clicked.connect(lambda :self.close())

  20.        OkB.clicked.connect(lambda :self.SendUserInf())

  21.    def SendUserInf(self):

  22.        print('用户名:',self.Line1.text())

  23.        print('密码:',self.Line2.text())

代码说明:第11、14行,在两个文本框前加“self.”,使其成为类变量,使得可以将文本发送出去。第21、22行,定义两个按钮的信号槽。第24~26行,定义“确定”键单击的事件。函数用“lambda:”进行包装,否则会出错。



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
PyQt信号与槽之多窗口数据传递(七)
PyQt5快速入门(二)PyQt5信号槽机制
PyQt5通信机制 信号与槽详解
PyQt5 GUI应用程序工具包入门(2)
pyqt类继承中的定义初始化函数
基于 Python 与Qt 的快速GUI 编程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服