我正在尝试通过eval()
在我的主要课程中定义我的按钮和其他内容时保存一些复制粘贴。我知道eval()
应该小心处理,但是我在这里给出了代码中的命令。这是创建错误的代码:
class MyApp(QMainWindow):
def __init__(self):
[...]
Schaltpunkte=["Aussen1","Innen1","Innen2","Innen","Alle"]
for Schaltpunkt in Schaltpunkte:
eval("self.ui.Button_"+Schaltpunkt+"Laden.clicked.connect(lambda: self.ladeZeitschaltung("+Schaltpunkt+"))")
点击按钮后出现的错误:
Traceback (most recent call last):
File "<string>", line 1, in <lambda>
NameError: name 'self' is not defined
我有这个想法,因为eval()
在另一个函数中运行良好:
Programm = eval("self.ui.Box_"+Schaltpunkt+"Programm.value()")
有人有什么建议吗?或者通过这样的代码将按钮与动作连接是完全错误的?谢谢你的帮助!
答案 0 :(得分:0)
您的lambda
函数不知道self
。
尝试定义一个提及self
的符号表,并将其赋予eval()
:
symbols = {"self": self}
eval("lambda x: self.foo(x)", symbols)