我有这个简化的代码无效,我无法理解为什么......我希望每次按下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()
答案 0 :(得分:1)
MySoc
中的initgui
对象具有本地范围,因此会在initgui
结束时销毁。
将对象分配给变量:
...
self.soc = MySoc(txt);
...
每按一次键,您将看到“有信号”输出。