PyQt4-timer.timeout.connect()-找不到参考

问题描述 投票:0回答:1
from PyQt4 import QtGui, QtCore
from code.pair import Pair
from code.breadth_first_search import breadth_first_search
import functools

class Ghosts(QtGui.QGraphicsPixmapItem):

    def __init__(self, name):
        super(Ghosts, self).__init__()

        self.set_image(name)

    def chase(self, goal):
        pos = Pair(self.x(), self.y())
        path = breadth_first_search(pos, goal)

        func = functools.partial(self.move_towards, path)
        timer = QtCore.QTimer()
        timer.timeout.connect(func)
        timer.start(700)

    def move_towards(self, path):
        print("in")
        if path.empty():
            return
        goal = path.get_nowait()
        self.setPos(goal.first(), goal.second())

当我输入此内容时,它告诉我

timer.timeout.connect()
- 找不到参考,这应该可以解决,但没有解决,并且当我运行它时没有任何反应。然后我尝试使用
QtCore.QTimer.singleShot(700, func)
而不是上面的计时器,它工作得很好,但只执行一次(正如它应该的那样)。我尝试制作一个执行多次的计时器的所有尝试都失败了。请帮忙。

python timer pyqt timeout
1个回答
2
投票

你犯了一个非常常见的错误。没有任何内容可以链接到您的

timer
,因此它会在
chaise
函数结束后被删除。将
timer
替换为
self.timer

© www.soinside.com 2019 - 2024. All rights reserved.