上一讲,我们编制了一个简单的登录对话框。而真正的登录对话框需要将输入的用户名和密码发送出去,进行处理。PyQt通过信号(signal)和槽(slot)机制实现对象间的通信。具体方法为:由一个事件(如:单击控件)触发信号,槽函数接收到信号便自动执行。 QtDesigner中定义定义内置信号槽
图1中,蓝色箭头的窗口中显示已有的信号槽,由于现在我们还没编辑任何信号槽,故此窗口中没有任何信号槽的定义。
进入信号槽编辑模式后,将鼠标从取消拖动到窗口的空白位置(如图2所示),松开鼠标,即弹出信号槽配置连接对话框(如图3所示)。
将 “显示从QWidget继承的信号和槽选中”,即可显示所有的信号和槽。这里我们要使“取消”键按下时,窗口关闭。故左边的信号选择“clicked()”,右边的槽选择“close()”,单击确定,即可定义好“取消”按钮的信号槽。并显示在了信号/槽编辑器里(如图4所示)。
当然,我们也可以单击“信号/槽编辑器”中的+号直接添加信号槽选择发送控件、信号函数、接收控件和槽函数。 定义自定义信号槽在本例中,单击确定键,槽函数需要将用户名和密码发送出去,故只能用自定义槽函数。和上一节一样进入信号槽编辑模式,通过拖动建立槽函数。然后在图3所示的信号槽配置连接对话框中单击“编辑”即进入如图5所示的自定义信号槽对话框。单击+号即可增加一个槽函数。然后在生成之后,在代码中定义相应的函数。
手写定义槽函数手写定义槽函数非常简单,语法为:
例(取消键的信号槽函数):
书写自定义函数时,只需在Ui_Form类中,定义一个自定义函数即可。我们将上一节的对话框,扩展如下:
代码说明:第11、14行,在两个文本框前加“self.”,使其成为类变量,使得可以将文本发送出去。第21、22行,定义两个按钮的信号槽。第24~26行,定义“确定”键单击的事件。函数用“lambda:”进行包装,否则会出错。 |
|