2012-12-15 65 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)