我无法将计时器连接到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)
答案 0 :(得分:1)
问题很简单,在函数中创建的变量是局部变量,函数完成后将被消除,因此不会触发信号,相反,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)