PyQt4 - timer.timeout.connect() - 找不到参考
PyQt4 - timer.timeout.connect() - cannot find reference
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)
而不是上面的计时器,它工作得很好,但只执行一次(应该如此)。我试图制作一个执行多次的计时器的一切都失败了。请帮忙。
你犯了一个很常见的错误。 timer
没有任何内容保存 link,因此它会在 chaise
函数结束后被删除。将 timer
替换为 self.timer
.
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)
而不是上面的计时器,它工作得很好,但只执行一次(应该如此)。我试图制作一个执行多次的计时器的一切都失败了。请帮忙。
你犯了一个很常见的错误。 timer
没有任何内容保存 link,因此它会在 chaise
函数结束后被删除。将 timer
替换为 self.timer
.