2012-07-15 109 views
0

我是Qt和PySide的新手,嘗試獲取PySide中的信號和插槽的感覺。PySide中的信號和插槽 - 類中定義的插槽

雖然按照Signals and Slots in PySide的文檔,我試圖轉移一些代碼在我的課堂上使用。

以下代碼創建一個DoubleSpinBox。當更改值時,我希望值value_changed_funcvalue_changed_class都被打印,但只有value_changed_func被調用。

from PySide import QtCore 
from PySide import QtGui 

@QtCore.Slot(float) 
def value_changed_func(value): 
    print "Event func:" 
    print value 

class MainController(QtCore.QObject): 

    def __init__(self, parent): 
     self._ui = QtGui.QDoubleSpinBox(parent) 

     self._ui.valueChanged.connect(self.value_changed_class) 
     self._ui.valueChanged.connect(value_changed_func) 

    @QtCore.Slot(float) 
    def value_changed_class(self, value): 
     print "Event class:" 
     print value 


app = QtGui.QApplication([]) 

main_window = QtGui.QMainWindow() 
MainController(main_window) 
main_window.show() 

app.exec_() 

我在做什麼錯?我如何獲得value_changed_class

回答

1

你沒有調用父類的構造:

def __init__(self, parent): 
    super(MainController, self).__init__(parent) 
    ... 
+0

也做到了,謝謝! – PetPaulsen 2012-07-15 20:38:45