信号在PySide中不起作用

时间:2014-09-03 20:11:45

标签: python-2.7 pyqt4 pyside qtgui qtcore

我在Python和PySide中编写了一个简单的应用程序。当我运行它时,SIGNAL不起作用。 应用程序启动时没有错误。

from PySide.QtCore import *
from PySide.QtGui import *
import sys

class Form(QDialog):

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

        dial = QDial()
        dial.setNotchesVisible(True)

        spinbox = QSpinBox()

        layout = QHBoxLayout()
        layout.addWidget(dial)
        layout.addWidget(spinbox)
        self.setLayout(layout)

        self.connect(dial, SIGNAL("valueChaged(int)"), spinbox.setValue)
        self.connect(spinbox, SIGNAL("valueChaged(int)"), dial.setValue)

        self.setWindowTitle("Signals and Slots")
    # END def __init__
# END class Form

def main():
    app = QApplication(sys.argv)
    form = Form()
    form.show()
    app.exec_()
# END def main

if __name__ == '__main__':
    main()
# END if

我正在使用:

Pyside 1.2.2; Python 2.7.6; OS Centos; Windows 7

我正在运行应用程序:

Sublime Text 3和Eclipse Luna;

如何使SIGNAL工作?

1 个答案:

答案 0 :(得分:1)

您的信号名称不正确;

不正确:

valueChaged (int)

Correct

valueChanged (int)

测试一下,工作正常;

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class QFormDialog (QDialog):
    def __init__(self, parent = None):
        super(QFormDialog, self).__init__(parent)
        self.myQial = QDial()
        self.myQSpinbox = QSpinBox()
        self.myQHBoxLayout = QHBoxLayout()
        self.myQial.setNotchesVisible(True)
        self.myQHBoxLayout.addWidget(self.myQial)
        self.myQHBoxLayout.addWidget(self.myQSpinbox)
        self.setLayout(self.myQHBoxLayout)
        self.connect(self.myQial,     SIGNAL('valueChanged(int)'), self.myQSpinbox.setValue)
        self.connect(self.myQSpinbox, SIGNAL('valueChanged(int)'), self.myQial.setValue)
        self.setWindowTitle('Signals and Slots')

if __name__ == '__main__':
    myQApplication = QApplication(sys.argv)
    myQFormDialog = QFormDialog()
    myQFormDialog.show()
    myQApplication.exec_()

注意:PyQt4& PySide的实现方式相同。