我无法将计时器连接到 move() 插槽
timer.timeout.connect(self.move)
这不起作用
但是QtCore.QTimer.singleShot(50, self.move)
这只是一步,而不是更多。
class Bullet(QGraphicsRectItem):
def __init__(self):
super().__init__()
self.setRect(0,0,10,50)
#timer = QTimer()
#timer.timeout.connect( self.move)
#timer.start(50)
QtCore.QTimer.singleShot(50, self.move)
def move(self):
print("Timer Clicked")
self.setPos(self.x(), self.y()-10)
最佳答案
问题很简单,函数中创建的变量是局部变量,当函数完成时将被消除,因此信号不会触发,而是 QTimer.singleShot()
有一个全局变量范围,解决方案是扩展计时器的范围,为此您必须使其成为该类的成员。
class Bullet(QGraphicsRectItem):
def __init__(self):
super().__init__()
self.setRect(0,0,10,50)
self.timer = QTimer()
self.timer.timeout.connect(self.move)
self.timer.start(50)
def move(self):
print("Timer Clicked")
self.setPos(self.x(), self.y()-10)
关于python - 定时器无法连接到pyqt5中的插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51442487/