我在使用 PySide Slot 装饰器时遇到了这种奇怪的情况。如果我使用 QtCore.Slot 装饰我的方法并且如果我尝试访问方法内部的 self.sender(),我会得到 None。如果我删除 QtCore.Slot() 装饰器。我正确地得到了发件人。这是一个最小的例子。
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class Worker(QObject):
def init(self):
print "worker is ready."
@Slot()
def work(self):
print "i am tired, %s" % self.sender()
app = QApplication(sys.argv)
button = QPushButton("Kick!")
button.show()
worker = Worker()
thread = QThread()
worker.moveToThread(thread)
thread.started.connect(worker.init)
button.clicked.connect(worker.work)
# app.connect(button, SIGNAL("clicked()"), worker, SLOT("work()"))
thread.start()
app.exec_()
sys.exit()
但是,如果我将新样式连接更改为旧方式,如注释行所示。
有用。有人可以解释这种行为吗?非常感谢。