2013-08-12 2 views
0

새로운 스타일 신호와 슬롯이 통합되기 전에있는 PySide 1.1.2로 응용 프로그램을 개발하고 있습니다. 유니 코드 또는 str 형식을 허용하는 경우를 제외하고 대부분의 사용자 지정 신호에는 문제가 없습니다. 매개 변수가 없거나 다른 형식은 잘 작동하지만 unicode 또는 str 매개 변수를 사용하면 "TypeError : 메타 함수에 사용 된 값 유형 (신호 포함)을 메타 유형에 등록해야합니다 : str"을 emit 성명서. 문PySide 1.1 신호/슬롯 오류

예제 (이 서로 다른 클래스에 물론이다) :

self.emit(QtCore.SIGNAL('setCountType(str)'), self.countType) 

self.connect(self.parent, QtCore.SIGNAL('setCountType(str)'), self.setCountType) 

# part of a class that inherits from QWidget 
def setCountType(self, value): 
    self.countType = value 

개의 발광 문은 오류가 발생 하나입니다.

답변

1

PySide 1.1.2는 새로운 스타일을 지원합니다. 필자의 경우 "strings"를 사용하는 신호는 완벽하게 작동합니다. 당신이 어떤 도움을 필요로하는 경우에 ,이를 확인 : http://qt-project.org/wiki/Signals_and_Slots_in_PySide

예 :이 답변 및 그 사이

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

class Window(QMainWindow): 
    signal = Signal(str) 

    def __init__(self, parent=None): 
     super(Window, self).__init__(parent) 
     self.button = QPushButton() 
     self.button.setText("Test") 
     self.setCentralWidget(self.button) 
     self.button.clicked.connect(self.button_clicked) 
     self.signal.connect(self.print_text) 

    @Slot() 
    def button_clicked(self): 
     print('button clicked') 
     self.signal.emit("It works!") 

    @Slot(str) 
    def print_text(self, text: str): 
     print(text) 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    window = Window() 
    window.show() 
    app.exec_() 
    sys.exit(0) 
+0

을 http://stackoverflow.com/questions/9712461/pyside-wait-for-signal에서 -from-main-thread-in-a-worker-thread에서 부모 윈도우의 슬롯을 얻는 방법을 조합하여 커스텀 QWidgets의 신호에 응답 할 수 있었다. – virtuesplea