J'essaie de modifier les commandes d'un panneau, de la mettre à jour, puis de continuer avec l'exécution du code. Le problème semble être que le panneau attend le ralenti avant qu'il se rafraîchisse. J'ai essayé de rafraîchir bien sûr aussi bien que Gakeizer (). Layout () et même envoyé un événement de redimensionnement au cadre à l'aide de la méthode SendSizeEvent (), mais en vain. Je suis à perte ici, j'ai du mal à croire qu'il n'y a aucun moyen de forcer un redessinement de ce panel. Voici le code qui modifie les contrôles:
def HideButtons(self): self.newButton.Show(False) self.openButton.Show(False) self.exitButton.Show(False) self.buttonSizer.Detach(self.newButton) self.buttonSizer.Detach(self.openButton) self.buttonSizer.Detach(self.exitButton) loadingLabel = wx.StaticText(self.splashImage, wx.ID_ANY, "Loading...", style=wx.ALIGN_LEFT) loadingLabel.SetBackgroundColour(wx.WHITE) self.buttonSizer.Add(loadingLabel) self.GetSizer().Layout() self.splashImage.Refresh()
3 Réponses :
Vous pouvez mettre la partie mutable de votre panneau sur les sous-panneaux, par exemple. comme ceci:
Vous devez appeler le mise à jour code>
méthode. P>
update () code> seul n'a pas aidé dans mon cas (
staticbitmap code> s dans un
gridsizer code> sur un panneau code>), mais Le Docs a déclaré que
Actualiser () code> déclencherait une repeinte inconditionnelle - qu'elle a fait lorsqu'il est suivi de
update () code>
Phoenix a changé la structure de liaison DOC. update code> a déménagé . C'est exactement ce que je cherchais. Merci!
J'ai eu un J'ai trouvé que l'appelant staticbitmap code> que, de même, ne serait pas mis à jour par aucune de ces techniques (y compris la mise à jour
code> suggérée dans la réponse acceptée). p>
.hide () code> et
.Show () code> sur le panneau
code> suffisait pour actualiser l'image. Je soupçonne que la même chose serait vraie si j'avais exécuté les fonctions contre un objet de niveau inférieur, comme le
staticbitmap code>. P>
Avez-vous essayé
self.show () code>?