Bonjour
Je me suis fait une interface Qt mais j'aimerais pourvoir rafraichir la fenètre assez souvent. Donc connaissez vous une methode permettant de forcer le rafraichissement de la fenètre MainWindow ou d'au moins une QGraphicsView.
Voilà
Bonjour
Je me suis fait une interface Qt mais j'aimerais pourvoir rafraichir la fenètre assez souvent. Donc connaissez vous une methode permettant de forcer le rafraichissement de la fenètre MainWindow ou d'au moins une QGraphicsView.
Voilà
Salut,
Je suis pas sûr que la question soit bien posée.
Pour rafraichir régulièrement, tu as juste à lancer un timer dont le signal timeout est connecté au slot update() du widget à rafraichir.
Le problème vient du faite que normalement des images devrait s'afficher, quand je clique sur le bouton pour les afficher manuellement celà fonctionne. quand je créé une boucle pour les affiché automatiquement, cela plante pendant quelque minute puis tout les images s'affiche d'un coups alors qu'elle devrait s'affiché une toute les minutes
mais j'ai donc essayé de mette un update dans la boucle mais cela ne change rien.
Ok, c'est beaucoup plus clair là
Il faut que tu crées un timer qui expire à chaque minute donc, et que dans le slot associé tu exécutes le changement d'image.
Ce qu'il se passe actuellement est que tu bloques la boucle d'événement, donc plus aucun événement n'est géré, aucun raffrachissement, aucune entrée utilisateur, rien.
Le rafraichissement se fait bien, le problème que je viens de rencontrer c'est sur la superposition d'image. En effet j'ai plusieurs jetons a affiché en pile, et la pile la pile la première fois que je l'affiche s'affiche très bien. Cependant je doit a moment la détruire pour la recréé avec moins de jetons, et la alors la pile s'affiche mal, des jetons sencé être en dessous se retrouve au dessus, c'est le bordel.
les piles de jetons sont des QGraphicsGroup et les jetons des QGraphicsItem.
J'ai éssayé avec des setFocus sur ma scène mais rien n'y fait, c'est toujours le bordel.
c'est du cade Python, j'utilise PyQt4 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 class JetonsItem(QtGui.QGraphicsItemGroup) : ## voir pour un QGraphicItemGroup pt pour avvifer plusieurs QGrpahicPixmapItem à voir def __init__(self,joueur, argent) : """constructeur""" QtGui.QGraphicsItemGroup.__init__(self) monney={1 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton1$.png')), 5 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton5$.png')), 10 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton10$.png')), 25 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton25$.png')), 100 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton100$.png'))} t=[] if argent>=100 : t.append(1) if argent%100>=25 : t.append(4) if (argent%100)%25>=10 : t.append(10) if ((argent%100)%25)%10>=5 : t.append(20) if (((argent%100)%25)%10)%5>=1 : t.argent(100) for i in t : x={1 : 0+30*(t.index(i)/3), 2 : 0-30*(t.index(i)%3), 3 : 0+30*(t.index(i)/3), 4 : 0+30*(t.index(i)/3), 5 : 0+30*(t.index(i)%3), 6 : 0+30*(t.index(i)/3), 7 : 0+30*t.index(i)} y={1 : 0+30*(t.index(i)%3), 2 : 0+30*(t.index(i)/3), 3 : 0-30*(t.index(i)%3), 4 : 0-30*(t.index(i)%3), 5 : 0-30*(t.index(i)/3), 6 : 0+30*(t.index(i)%3), 7 : 0} jetonsItem=[] while argent>=100/i : if argent>=100/i : jetonsItem.append(QtGui.QGraphicsPixmapItem()) jetonsItem[len(jetonsItem)-1].setPixmap(monney[100/i]) jetonsItem[len(jetonsItem)-1].setPos(x[joueur],y[joueur]) argent-=100/i x[joueur]+=2 y[joueur]-=2 for item in jetonsItem : self.addToGroup(item)
Donc en gros dans mon code pour afficher des jetons j'appelle d'abord resetJetons qui supprime les anciens jetons puis setJetons.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 def setJetons(self,joueur,argent, derniereRelance=0) : x={1 : 640, 2 : 700, 3 : 500, 4 : 250, 5 : 185, 6 : 400, 7 : 400} y={1 : 182, 2 : 335, 3 : 420, 4 : 410, 5 : 240, 6 : 162, 7 : 320} self.jetonsArgentGroup[joueur]=JetonsItem(joueur,argent) self.jetonsArgentGroup[joueur].setPos(x[joueur],y[joueur]) self.scene.addItem(self.jetonsArgentGroup[joueur]) self.scene.setFocusItem(self.jetonsArgentGroup[joueur]) x={1 : 580, 2 : 610, 3 : 575, 4 : 320, 5 : 275, 6 : 330, 7 : 0} y={1 : 230, 2 : 290, 3 : 360, 4 : 360, 5 : 290, 6 : 230, 7 : 0} self.jetonsRelanceGroup[joueur]=JetonsItem(joueur,derniereRelance) self.jetonsRelanceGroup[joueur].setPos(x[joueur],y[joueur]) self.scene.addItem(self.jetonsRelanceGroup[joueur]) self.scene.setFocusItem(self.jetonsRelanceGroup[joueur]) return def resetJetons(self,joueur) : try : self.scene.removeItem(self.jetonsArgentGroup[joueur]) self.scene.removeItem(self.jetonsRelanceGroup[joueur]) except KeyError : pass return
Comme je l'ai dit la première fois que j'affiche les jetons (j'appelle que setJetons) ils sont bien rangés, mais des que j'appelle resetJetons, puis setJetons il ne sont plus correctement affiché
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager