Python PySide(Qt)信号未到达我的插槽

Python PySide(Qt)信号未到达我的插槽,python,qt,signals,pyside,Python,Qt,Signals,Pyside,我有这个简化的代码,不工作,我不明白为什么。。。我希望每次按下qtexdit中的一个键时都能调用MySlot.slt(),但事实并非如此!你能看一下吗 #!/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

我有这个简化的代码,不工作,我不明白为什么。。。我希望每次按下
qtexdit
中的一个键时都能调用
MySlot.slt()
,但事实并非如此!你能看一下吗

#!/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()

initgui
中的
MySoc
对象具有本地作用域,因此在
initgui
末尾被销毁

将对象指定给变量:

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

每次按键时,您都会看到“got signal”输出。
initgui
中的
MySoc
对象具有局部作用域,因此在
initgui
结束时被销毁

将对象指定给变量:

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

每次按键时,您都会看到“got signal”输出。

几句话:陈述您的实际问题总是好的——与其说“代码不工作”,不如更好地解释您的期望以及代码的不同行为。我假设您没有看到发送到插槽的信号,请参见下面我的答案。我还调整了标签-看起来你所谓的“socket”在Qt中实际上被称为“slot”。A是不一样的+完整且可运行的示例代码-这使分析变得非常容易@Andreas感谢您的评论、回答和调整;)几句话:陈述您遇到的实际问题总是好的——与其说“代码不工作”,不如更好地解释您的期望以及代码的不同行为。我假设您没有看到发送到插槽的信号,请参见下面我的答案。我还调整了标签-看起来你所谓的“socket”在Qt中实际上被称为“slot”。A是不一样的+完整且可运行的示例代码-这使分析变得非常容易@Andreas感谢您的评论、回答和调整;)