У меня есть два класса: класс Bullet и Main Class. Мне нужно создать движение пули, и я это сделал, но когда пуля выходит за пределы экрана, я не знаю, как остановить функцию движущейся пули. Из-за этого программа со временем замедляется.
import multiprocessing as mp
from PyQt5.QtCore import Qt, QTimer
def bullet(self):
if self.bull_on[0] is None:
if self.bull is not None:
self.timer.stop()
del self.bull
self.bull = Bullet(self, self.player.geometry(), self.pipeB1)
self.bull_on[0] = 1
if self.player.pix1.position == 'up':
self.timerCallback = functools.partial(self.bull.move_up, isOn=self.bull_on)
self.timer.timeout.connect(self.timerCallback)
self.timer.start(10)
Выше кода создает экземпляр класса Bullet и запускает функцию для перемещения пули
Код ниже - это функция, которая начинается
def move_up(self, isOn):
send = [self.rec1.x(), self.rec1.y() - self.counter * 2, 'u']
self.pipe.send(send)
val = self.pipe.recv()
if val > -1:
self.bullet1 = QPixmap('Images\\Bullet_up.png')
self.setGeometry(self.rec1.x() + 16, self.rec1.y() - 20 - self.counter*2, self.rec1.width(), self.rec1.height())
self.setPixmap(self.bullet1)
self.show()
self.counter += 1
else:
isOn[0] = None
self.hide()
Я использую
* * 1009 self.timer.stop ()
и
del self.bull
но это не работает. Я пытался
* * Self.timer.disconnect тысячи двадцать-одина (self.timerCallback) * +1022 *
но это выдает ошибки, говорящие, что труба не закрыта должным образом.
У меня вопрос, как остановить функцию в фоновом режиме?