作者:Python中文社区 ![]() 上一讲,我们编制了一个简单的登录对话框。而真正的登录对话框需要将输入的用户名和密码发送出去,进行处理。PyQt通过信号(signal)和槽(slot)机制实现对象间的通信。具体方法为:由一个事件(如:单击控件)触发信号,槽函数接收到信号便自动执行。 QtDesigner中定义定义内置信号槽![]() 图1 QtDesigner中的信号槽定义 图1中,蓝色箭头的窗口中显示已有的信号槽,由于现在我们还没编辑任何信号槽,故此窗口中没有任何信号槽的定义。 单击图1中红色箭头所指的按钮即可进入信号槽编辑模式。即可定义信号槽。 ![]() 图2 定义信号槽 进入信号槽编辑模式后,将鼠标从取消拖动到窗口的空白位置(如图2所示),松开鼠标,即弹出信号槽配置连接对话框(如图3所示)。 ![]() 图3 信号槽配置连接对话框 将 “显示从QWidget继承的信号和槽选中”,即可显示所有的信号和槽。这里我们要使“取消”键按下时,窗口关闭。故左边的信号选择“clicked()”,右边的槽选择“close()”,单击确定,即可定义好“取消”按钮的信号槽。并显示在了信号/槽编辑器里(如图4所示)。 ![]() 图4 信号槽配置效果 当然,我们也可以单击“信号/槽编辑器”中的+号直接添加信号槽选择发送控件、信号函数、接收控件和槽函数。 定义自定义信号槽在本例中,单击确定键,槽函数需要将用户名和密码发送出去,故只能用自定义槽函数。和上一节一样进入信号槽编辑模式,通过拖动建立槽函数。然后在图3所示的信号槽配置连接对话框中单击“编辑”即进入如图5所示的自定义信号槽对话框。单击+号即可增加一个槽函数。然后在生成之后,在代码中定义相应的函数。 ![]() 图5 自定义信号槽对话框 手写定义槽函数手写定义槽函数非常简单,语法为:
例(取消键的信号槽函数):
书写自定义函数时,只需在Ui_Form类中,定义一个自定义函数即可。我们将上一节的对话框,扩展如下:
代码说明:第11、14行,在两个文本框前加“self.”,使其成为类变量,使得可以将文本发送出去。第21、22行,定义两个按钮的信号槽。第24~26行,定义“确定”键单击的事件。函数用“lambda:”进行包装,否则会出错。 赞赏作者 ![]() 本文作者 ![]() 小溪 土木工程硕士毕业,硕士期间利用Python进行数据处理和ABAQUS二次开发,现就职于上海某土木工程咨询公司,从事土木工程软件开发工作。 ![]() ![]() 点击阅读原文,加入CodingGo编程社区,更多阅读请点击: PyQt5 GUI应用程序工具包入门(1) PyQt5 GUI应用程序工具包入门(2) ------------------------------------------------------------------------- 我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。 ------------------------------------------------------------------------- |