PySide(Qt)信号没有到达我的插槽

时间:2012-12-18 05:25:04

标签: python qt signals pyside

我有这个简化的代码无效,我无法理解为什么......我希望每次按下MySlot.slt()中的某个键时都会调用QTextEdit,但它不会牛逼!你能看一下吗?

#!/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 个答案:

答案 0 :(得分:1)

MySoc中的initgui对象具有本地范围,因此会在initgui结束时销毁。

将对象分配给变量:

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

每按一次键,您将看到“有信号”输出。