2012-12-15 43 views
3
from PySide.QtCore import * 
from PySide.QtGui import * 

import sys 
import stackwid 

class Dialog(QDialog,stackwid.Ui_Dialog): 

    def __init__(self,parent = None): 
     super(Dialog,self).__init__(parent) 
     self.setupUi(self) 


     self.camButton.clicked.connect(self.set()) 


    def set(self): 

     self.stackedWidget.setCurrentIndex(1) 


app = QApplication(sys.argv) 
form = Dialog() 
form.show() 
app.exec_() 

我想连接由camButton(按钮)发出点击()信号到插槽该函数集()这只是不运行。pyside连接错误“RuntimeError:未能连接信号点击()”

RuntimeError: Failed to connect signal clicked() 

回答

10

您不会将信号连接到您的set()功能,而是它的返回值。你只需要去掉括号,那么它应该工作:

self.camButton.clicked.connect(self.set) 
+0

感谢名单奏效...... 但我需要通过额外的参数,在没有设置成一套方法。 def set(self,no): self.stackedWidget.setCurrentIndex(no) 如何去做这件事? 不应该使用, self.camButton.clicked.connect(self.set(no)) – vjdhama

+1

['clicked'-Signal](http://qt-project.org/doc/qt/qabstractbutton.html#点击)只有一个布尔参数“checked”。如果你想传递另一个参数到你的插槽(在这种情况下是函数的),你需要定义你自己的信号并在点击按钮时发出它。 – mata

4

传递额外的参数给插槽,这可能会帮助你,祝你好运!

self.camButton.clicked.connect(lambda: self.set(index)) 

def set(self, index): 

    self.stackedWidget.setCurrentIndex(index)