Python Pyqt5使用exec和lambda向插槽发送arugment

时间:2018-01-03 00:25:45

标签: python-2.7 lambda exec pyqt5 signals-slots

Python 2.7.13 PyQt5

我正在动态创建/删除我添加到Pyqt中的菜单栏中的变量。 我试图使用lambda发送一个参数

exec(a[0] + 'btn' + '.triggered.connect(lambda : self.on_click_fav_list(a[0]))')

我收到此错误

File "<string>", line 1, in <lambda>
NameError: global name 'self' is not defined

为什么不承认这一切都发生在课堂上?我的逻辑中是否缺少某些东西?

1 个答案:

答案 0 :(得分:0)

所以我可能发布得太快了。这是我使用functools.partial函数找到的解决方案

from functools import partial
exec(a[0] + 'btn' + '.triggered.connect(partial(self.on_click_fav_list, a[0]))')

我仍然不确定lambda为什么会出现这个错误但是这个函数按预期运行