Mi dispiace per la domanda, ma ho letto un sacco di cose e sembra che non capisco come fare un timer. Quindi sto postando il mio codice:PyQt4 - creazione di un 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)
while not path.empty():
aim = path.get_nowait()
func = functools.partial(self.move_towards, aim)
timer = QtCore.QTimer()
QtCore.QTimer.connect(timer, QtCore.SIGNAL("timeout()"), self, QtCore.SLOT("func()"))
timer.start(200)
def move_towards(self, goal):
self.setPos(goal.first(), goal.second())
Sto provando a spostare l'oggetto verso il suo obiettivo ogni 200ms. Ho provato senza di sé mi dà gli stessi errori:
QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'bytes'
QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'bytes'
QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 2 has unexpected type 'bytes'
non ho idea di come collegare il timer a una funzione con argomenti. Ho pensato che non sto usando l'argomento SLOT a destra ma mi ha dato quei mystakes. Suppongo che sia tutto sbagliato. Gradirei un po 'di aiuto:)
ho provato, ma non ha nemmeno entrare in move_towards, poi ho provato con 'timer.timeout.connect (func)' ma non ha funzionato neanche. Quando ho provato 'QtCore.QTimer.singleShot (200, func)' funziona ma fa una mossa e poi si ferma. – vixenn
Modificato per contenere un esempio completo –
Se non funziona per voi quindi è necessario assicurarsi che il riferimento al timer memorizzato non sia garbage collector e anche passare un widget come genitore al timer che dovrebbe impedire la garbage collection prematura quando si esce dall'ambito. – kmcguire