2012-05-24 140 views
6

我尝试在PyQt类中添加一个函数,但它总是返回一个错误。在PyQt中创建动态按钮

# Error: TypeError: connect() slot argument should be a callable or a signal, not 'NoneType' # 
def commander (self, arg): 
    exec arg  

def aButton (self, layout, **kwargs): 
    name = kwargs.pop("name","Button") 
    command = kwargs.pop("command", "") 
    button = QtGui.QPushButton(name) 
    button.clicked.connect(self.commander(command)) 
    layout.addWidget(button) 
    return button 

可能是有人在这里能帮助我解决了:') THX!

回答

20

你需要一个函数:

button.clicked.connect(lambda: self.commander(command)) 

注拉姆达将避免函数调用的评价,所以点击

+2

好'call' hehe .. –

+0

谢谢!有用 ! – MObject

+1

好吧!我是新来的;)thx再次:) – MObject

2

看来在

button.clicked.connect(self.commander(command)) 

self.commander(command)在返回None代替信号或调用。

+0

只有当是的,它会叫self.commander(command),但我只是想执行一些代码当按钮被点击时。我不明白我需要回报什么样的价值。 return compile(arg,'','exec') 我尝试过,但它是一样的... – MObject