1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
from PyQt4.QtGui import QMainWindow
from PyQt4 import QtGui, QtCore, uic
import random
import sys
class MyView(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
#j'ai crée auparavant une fenêtre avec QtDesigner dans laquelle je dispose d'une QGraphicsView, ici je load cette fenêtre
uic.loadUi('fenetreAnimation.ui', self)
self.graphicsView.scene = QtGui.QGraphicsScene(self)
#images reprèsente toute les images de la main (ouverte, semi-ouverte,fermée)
self.images = [QtGui.QPixmap("main1.png"), QtGui.QPixmap("main2.png"), QtGui.QPixmap("main3.png"),
QtGui.QPixmap("main4.png"), QtGui.QPixmap("main5.png"), QtGui.QPixmap("main6.png")]
#je rajoute à ma scène les objets a déplacer une banane et un cheval
self.graphicsView.item = QtGui.QGraphicsPixmapItem(QtGui.QPixmap("banane.gif"), None, self.graphicsView.scene)
self.graphicsView.item2 = QtGui.QGraphicsPixmapItem(QtGui.QPixmap("cheval.gif"), None, self.graphicsView.scene)
self.graphicsView.item2.setPos(-700, 0)
self.graphicsView.item.setPos(-900, 0)
#le bouton parler permet de lancer l'animation
self.pushButton_3.clicked.connect(self.play)
self.graphicsView.setScene(self.graphicsView.scene)
#code du bouton parler
def play(self):
self.tl = QtCore.QTimeLine(3000)
self.tl.setFrameRange(0, 2000)
self.a = QtGui.QGraphicsItemAnimation()
self.a.setItem(self.graphicsView.item)
self.a.setTimeLine(self.tl)
self.a.setPosAt(0, QtCore.QPointF(-900, 0))
self.a2 = QtGui.QGraphicsItemAnimation()
self.a2.setTimeLine(self.tl)
#le setItem qui permet d'avoir la première image de la main
self.a2.setItem(QtGui.QGraphicsPixmapItem(self.images[0], None, self.graphicsView.scene))
# probabilité 1/3
u = random.randint(1, 3)
if u == 2:
for i in range(0, 800):
#cette boucle permet a la main de se translater
self.a2.setPosAt(abs(i) / 800, QtCore.QPointF(-i, -80))
print("cheval")
#if self.a2.posAt(0.9999):
#self.a2.setItem(QtGui.QGraphicsPixmapItem(self.images[3], None, self.graphicsView.scene))
# print(self.a2.posList())
else:
for i in range(0, 900):
self.a2.setPosAt(abs(i) / 900, QtCore.QPointF(-i, -80))
print("banane")
# if self.a2.posAt(0.9999):
#self.a2.setItem(QtGui.QGraphicsPixmapItem(self.images[3], None, self.graphicsView.scene))
self.tl.start()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
view = MyView()
view.setFixedSize(1300, 1000)
view.show()
sys.exit(app.exec_()) |
Partager