9
votes

Comment forcez-vous rafraîchi d'un WX.Panel?

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()


1 commentaires

Avez-vous essayé self.show () ?


3 Réponses :


1
votes

Vous pouvez mettre la partie mutable de votre panneau sur les sous-panneaux, par exemple. comme ceci: xxx


0 commentaires

13
votes

Vous devez appeler le mise à jour méthode.


2 commentaires

update () seul n'a pas aidé dans mon cas ( staticbitmap s dans un gridsizer sur un panneau ), mais Le Docs a déclaré que Actualiser () déclencherait une repeinte inconditionnelle - qu'elle a fait lorsqu'il est suivi de update ()


Phoenix a changé la structure de liaison DOC. update a déménagé . C'est exactement ce que je cherchais. Merci!



4
votes

J'ai eu un staticbitmap que, de même, ne serait pas mis à jour par aucune de ces techniques (y compris la mise à jour suggérée dans la réponse acceptée).

J'ai trouvé que l'appelant .hide () et .Show () sur le panneau 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 .


0 commentaires