前言
最近开发项目,使用PyQt5学习了一些知识,简单记录一下!
信号与槽
使用Qt设计好界面,再通过PyUic转化成py,就可以通过其他python来调用设计好的界面控件。在调用界面控件时,我们使用到信号与槽。
举个例子:
我前端设计采用了一个按钮。
按钮有对应的Click事件,那这个点击事件要如何和后台沟通。那么就需要连接。这个连接的方式有好几种。我简单介绍一下:
定义Click事件,也就是对应的函数;
def btn_click(self):
pass
然后使用connect连接起来。
self._ui.xx.clicked.connect(self.btn_click)
_ui是我们设计的界面,我们可以命名为_ui使用。
xx就是这个界面里的控件。
clicked可以是这个控件对应的事件。
通过以上的方式,我们就完成了一个简单的信号与槽的绑定。
于是乎,可能就会出现一个按钮对应一个槽函数。我们的多个按钮,相当于多个信号,使用同一个槽函数。
我们可以做出如下更改:
self._ui.xx.clicked.connect(lambda:self.btn_click(yy))
我们在这里区分不同的信号,就是在给它增加一个区分,添加一个变量,这个变量根据我按钮的不同来变化。
def btn_click(self,yy):
pass
这里的yy就可以知道是什么按钮按下的,来进行不同的操作,这样我们避免出现定义重复的函数,尤其当很多按钮按下的事件处理相同,仅有一个数据不同时,这种方式可以减少很多的代码量,优化了代码!
总结
本文记录了在使用connect信号与槽的两种方式。