pyqt5 python Gui入门教程 下载本文

点击工具栏上的“编辑信号/槽”,进入信号槽编辑模式,

我们可以直接在发送者(button)上按住不放拖动到接收者(Form窗体)上既可以建立连接。

然后会弹出信号槽的配置连接。

左边是发送者(按钮)的信号(动作事件),右边是接收者(窗体)的槽(动作事件)

我们看一下编译后生成的代码:

pushButton.clicked.connect(Form.close) 简单解释就是:当按钮点击之后关闭窗体。 实际却是:按钮.点击.链接(窗体.关闭)

其实应该是:按钮这个发送者,当按钮“点击”这个时间发生之后会发送一个信号出去,通过这段代码程序内部的通讯机制知道这个按钮的点击事情被连接到窗体的关闭事件上去了,然后通知接受者窗体,你该运行槽函数close了! 简单理解:比如我写了封信给你,送到邮局,邮局通过地址,转交给你。所以一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。

其实以上只是个人的浅显理解,具体的通信机制还是非常复杂的,想象一下邮局的工作就知道啦。

我们再来看看一些具体的代码:

self.pushButton.clicked.connect(Form.close) 按钮点击连接到窗口关闭

self.pushButton.clicked.connect(self.pushButton_2.hide) 按钮点击连接到按钮_2隐藏

self.pushButton.destroyed.connect(self.pushButton_2.close)

按钮销毁连接到按钮_2关闭

self.pushButton.released.connect(Form.update) 按钮重载连接到窗口更新

那么我们怎么能执行自己的“槽”呢?

通过之前学习的方法,我们继承了Ui_Form,然后将按钮1和按钮2都连接到prn函数上,测试OK。

对于初学者想要简单使用信号槽的机制,其实并不难,当然其中也有不少坑,还是多多测试为妙! 知识点:

在PyQt中接受者和发送者必须是个对象(实例)!

PyQt中的控件中提供了很多信号和槽方法,大家可以多多使用Qt Designer 设计参考!

槽其实就个函数(方法),Qt5中的槽函数不在限定必须是slot,可以是普通的函数、类的普通成员函数、lambda函数等。编译期间就会检查信号与槽是否存在!

信号的connect连接最好放在__init__析构函数里面,这样只会声明一次连接,如果在类方法(函数中)使用的话,要记得disconnect,否则connect会连接多次,导致程序异常。

信号槽函数不用加 (),否则可能会导致连接异常。

PyQt5&python Gui入门教程(10)Qt Designer 义信号emit及传参

自定