2012-10-02 5 views
0

두 클래스가 있습니다. 창 내 하나 내 제어 개체pyqt4 qobject 클래스의 pyqt4 신호 연결

class window(baseClass, testForm): 
    scanStarted = QtCore.pyqtSignal(str) 
    def __init__(self,parent=None): 
     super(window, self).__init__(parent) 
     self.setupUi(self) 

     #other window setup 
     self._scanner.pushScan.clicked.connect(self._scanClicked) 

    def _scanClicked(self): 
     self.scanStarted.emit(self._scanner.getTextData()) 

하나 내 제어 개체

class vis(QtCore.QObject): 
    def __init__(self): 
     self._oreList = [] 

     self._w = window() 
     self._w.scanStarted.connect(self._scanOre) 

    def _scanOre(self, rawText): 
     print "main ->", rawText 

내 기준으로 QtCore.QObject를 사용하여,이 신호는 _scanOre에 연결할 것이다. 파이썬 '객체'에 대한 참조를 전환하면 잘 작동합니다. QtCore.QObject 유형을 사용하여 연결하지 않는 이유를 알아 내려고 노력했습니다.

신호도 관계없이 창 클래스에서 잘 연결됩니다.

_scanOre에게 @ QtCore.pyqtSlot (str, name = 'scanGo')을 지정하고 name 매개 변수를 신호 생성에 추가하려고했습니다. 내가 여기서 무엇을 놓치고 있는지 잘 모르겠습니다. 나는 그것이 내가 내려다 보이는했다 쉬운 일이 될 줄 알았어,

class vis(QtCore.QObject): 
    def __init__(self, parent=None): 
     super(vis, self).__init__(parent) # you are missing this line 
              # also the `parent` arg 
     self._oreList = [] 

     self._w = window.window() 
     self._w.scanStarted.connect(self._scanOre) 

    def _scanOre(self, rawText): 
     print "main ->", rawText 

답변

2

당신은 QObject를 초기화하는 것을 잊었다.
+0

아 남자 : – ooklah