2012-12-18 68 views
1

我有這個簡化的代碼不起作用,我不明白爲什麼......我希望每次按我的QTextEdit中的某個鍵時都會調用MySlot.slt(),但它不會「T!你能看一下嗎?PySide(Qt)信號沒有到達我的插槽

#!/usr/bin/env python2 

import sys 
from PySide import QtGui, QtCore 

class MySlot(object): 
    def __init__(self, qte): 
     qte.textChanged.connect(self.soc) 

    def slt(self): 
     print("got signal") 

class MainWid(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(MainWid, self).__init__(parent) 
     self.initgui() 

    def initgui(self): 
     lay = QtGui.QVBoxLayout() 
     txt = QtGui.QTextEdit(self) 
     MySoc(txt) 

     lay.addWidget(txt) 
     self.setLayout(lay) 
     self.show() 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    wid = MainWid() 
    sys.exit(app.exec_()) 

if __name__=="__main__": 
    main() 
+1

一對夫婦的言論:這是一件好事,說明你有實際的問題 - 而不是「代碼不起作用」,更好地解釋你期望什麼,以及如何代碼的行爲不同。我假設你沒有看到信號傳輸到你的插槽,請參閱下面的答案。我也調整了標籤 - 看起來你所謂的「套接字」在Qt中被稱爲「插槽」。 A [插座](http://en.wikipedia.org/wiki/Internet_socket)是不同的東西。 +1爲完整和可運行的示例代碼 - 這使得它非常容易分析! –

+1

@Andreas謝謝你的評論,回答和調整;) – Psyclops

回答

1

MySoc對象initgui具有局部範圍,因此在initgui末銷燬。

分配對象變量:

... 
self.soc = MySoc(txt); 
... 

,你會看到每次按下某個鍵時,「有信號」輸出。