2014-09-03 3 views
-2

Я написал простое приложение в Python и PySide. Когда я запускаю его, СИГНАЛЫ не работают. Приложение запускается без ошибок.СИГНАЛЫ не работают в PySide

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 и Затмения Луны;

Как я могу использовать СИГНАЛЫ?

+0

КПП. С новым синтаксисом сигнала стиля 'dial.valueChanged.connect (spinbox.setValue)' вы получили бы ошибку. – Trilarion

ответ

1

Ваше имя неверное;

Неправильно:

valueChaged (int) 

Correct:

valueChanged (int) 

Test это, отлично работает;

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 такой же способ реализации.

+1

Благодарим вас за ответ. Виноват. – Romulus