lambda在绑定槽函数时的应用

槽函数需要的是函数本身,而不是函数的执行结果,所以:

 1. 如果槽函数没有参数:

self.gw_Btn.clicked.connect(self.ne_event)
def ne_event(self):
pass

2. 如果槽函数有参数:
self.gw_Btn.clicked.connect(lambda:self.ne_event(ne))
def ne_event(self, nEdit):
pass
不使用lambda的话会报错:
TypeError: argument 1 has unexpected type 'NoneType'


python加括号和不加括号的区别:
(1)不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不须等该函数执行完成
(2)带括号(参数或者无参),调用的是函数的执行结果,须等该函数执行完成的结果

 1  1 def test(a):
 2  2     return a
 3  3 
 4  4 
 5  5 if __name__ == '__main__':
 6  6     s = test(6)    # 传入参数,等待函数执行完,把获取函数的返回值赋给s
 7  7     print(type(s))
 8  8     print(s)
 9  9 
10 10     s = test      # 把test这个函数整体赋给s,相当于别名
11 11     print(type(s))
12 12     print(s)
13 
14 输出结果:
15 <class 'int'>
16 6
17 <class 'function'>
18 <function test at 0x000001B506C19318>
View Code

 

 

posted on 2020-02-13 11:07  Rita_Jia  阅读(438)  评论(0)    收藏  举报

导航