计时器无法连接到pyqt5中的插槽

时间:2018-07-20 12:23:16

标签: python pyqt pyqt5

我无法将计时器连接到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)

1 个答案:

答案 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)