0

私は Qt と PySide が初めてで、PySide のシグナルとスロットの感覚をつかもうとしています。

PySide の Signals and Slotsのドキュメントに従いながら、クラスで使用するコードをいくつか転送しようとしました。

次のコードは、DoubleSpinBox を作成します。value_changed_func値を変更するとき、関数との両方によって値が出力されることを期待していますが、呼び出されるvalue_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ば呼ばれるようになりますか?

4

1 に答える 1

1

親コンストラクターを呼び出しませんでした:

def __init__(self, parent):
    super(MainController, self).__init__(parent)
    ...
于 2012-07-15T17:15:49.573 に答える