wxPython refresh

Le
Ali
Bonjour

j'ai un petit problème avec une appliaction python qui utilise wxpython.
Concrétement, un thread de calcul appel cette méthode :
def paint(self, blues):
self.frame.blues = blues
self.frame.Refresh(True)

et la fonction on_paint du frame est sensé faire les dessins. Le problème,
c'est que les dessins ne sont raffraîchi que si je bouge la souris sur la
fenêtre de l'application, alors que je pensais qu'en appelant le
frame.Refresh(True), ça allait se faire automatiquement.

Quelqu'un peut m'aider?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
francois
Le #626297
On Jun 26, 12:49 pm, Ali
Bonjour

j'ai un petit problème avec une appliaction python qui utilise wxpython.
Concrétement, un thread de calcul appel cette méthode :
def paint(self, blues):
self.frame.blues = blues
self.frame.Refresh(True)

et la fonction on_paint du frame est sensé faire les dessins. Le probl ème,
c'est que les dessins ne sont raffraîchi que si je bouge la souris sur la
fenêtre de l'application, alors que je pensais qu'en appelant le
frame.Refresh(True), ça allait se faire automatiquement.

Quelqu'un peut m'aider?


Normalement les opérations sur la GUI doivent se faire dans le thread
principal (sous Linux pas mal de librairies ne sont pas thread-safe).

Il a des explications dans le livre "WxPython in Action" p 539
"Creating a multithreaded wxPython application"

Pour ma part j'utilise donc des CallAfter:

http://wiki.wxpython.org/CallAfter

francois

Ali
Le #631441
On Tue, 26 Jun 2007 14:02:47 +0000, francois wrote:

Normalement les opérations sur la GUI doivent se faire dans le thread
principal (sous Linux pas mal de librairies ne sont pas thread-safe).

Il a des explications dans le livre "WxPython in Action" p 539
"Creating a multithreaded wxPython application"

Pour ma part j'utilise donc des CallAfter:

http://wiki.wxpython.org/CallAfter

francois


o/
Merci beaucoup!

hg
Le #631174
francois wrote:

On Jun 26, 12:49 pm, Ali
Bonjour

j'ai un petit problème avec une appliaction python qui utilise wxpython.
Concrétement, un thread de calcul appel cette méthode :
def paint(self, blues):
self.frame.blues = blues
self.frame.Refresh(True)

et la fonction on_paint du frame est sensé faire les dessins. Le
problème, c'est que les dessins ne sont raffraîchi que si je bouge la
souris sur la fenêtre de l'application, alors que je pensais qu'en
appelant le frame.Refresh(True), ça allait se faire automatiquement.

Quelqu'un peut m'aider?


Normalement les opérations sur la GUI doivent se faire dans le thread
principal (sous Linux pas mal de librairies ne sont pas thread-safe).

Il a des explications dans le livre "WxPython in Action" p 539
"Creating a multithreaded wxPython application"

Pour ma part j'utilise donc des CallAfter:

http://wiki.wxpython.org/CallAfter

francois


Essaye un wx.Timer avec Refresh dans le thread principal.

hg


NicolasP
Le #631166
Bonjour

j'ai un petit problème avec une appliaction python qui utilise wxpython.
Concrétement, un thread de calcul appel cette méthode :
def paint(self, blues):
self.frame.blues = blues
self.frame.Refresh(True)

et la fonction on_paint du frame est sensé faire les dessins. Le problème,
c'est que les dessins ne sont raffraîchi que si je bouge la souris sur la
fenêtre de l'application, alors que je pensais qu'en appelant le
frame.Refresh(True), ça allait se faire automatiquement.

Quelqu'un peut m'aider?


Pour ma part, j'utilise wx.PostEvent pour evoyer des évènements au thread principal (celui qui gère l'affichage) à partir des threads "travailleurs".

Je peux poster un exemple si nécessaire (c'est un petit peu long).

Nicolas

Ali
Le #630905
On Wed, 27 Jun 2007 09:18:12 +0200, NicolasP wrote:


Pour ma part, j'utilise wx.PostEvent pour evoyer des évènements au thread principal
(celui qui gère l'affichage) à partir des threads "travailleurs".


Le callAfter semble avoir résolu le problème. Mais c'est bon à savoir.
Merci :)

Publicité
Poster une réponse
Anonyme