IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

Modifier le texte d'un StaticText


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut Modifier le texte d'un StaticText
    Salut,

    Voilà, je débute sur wx, et j'aurais aimé savoir comment changer le texte d'un StaticText... Est-ce possible ? Si oui, comment ? Si non, avec quel widget faut-il s'y prendre ?

    Pour un peu plus de détails : je dois "traquer" plusieurs valeurs qui change toutes les secondes, et afficher ces dernières dans un texte préformaté. J'ai déjà réalisé toute l'interface, mais pour l'instant je fais de simple print pour l'affichage des dites valeurs... Ce qui bien évidemment, manque de classe.

    Edit : Ben en fait, c'est bon. J'ai un peu galéré, mais j'ai trouvé : il faut utiliser un wx.TextCtrl avec un style readonly... faut qu'j'me fasse à la philosophie wx...

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut
    Bonjour,

    Il y a certainement mieux mais je l'utilise en créant une Frame, puis un Panel puis dans ce panel j'y met mon statictext. J'ai créé une mise à jour de poucentage avec cela. Tu mets une nouvelle valeur à chaque fois et tu actualise l'affichage. Cela fonctionne mais ca peu buggé si tu as des valeur décimale, pense à limiter cela.

    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
     
    import Nom de autre prog
     
    class NewFen(wx.Frame):
                def __init__(self, titre):
                      wx.Frame.__init__(self, None, -1, title = titre)
                      panneau = wx.Panel(self, -1)
                      self.pretext1 = wx.StaticText(panneau, 1, "Ta valeur", pos = (x,y), style = wx.ALIGN_CENTER)
                      # Ici tu as sans doute des boutons et autres tu crées un lien vers un autre prog
                      Nom de ton prog.start(self)    #start comme exemple, cela dépend du nom de ta fonction dans ton prog. self avec pour réutilisé ton objet et permettre l'actualisation
     
    class MonApp(wx.App):
                def OnInit(self):
                         fen = NewFen("Ton affichage")
                         fen.Show(True)
                         self.SetTopWindow(fen)
                         return True
    ton autre prog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def start(self2):
                self2.pretext1 = wx.StaticText(self2.panneau, 1, "Ta nouvelle valeur", pos = (x,y), style = wx.ALIGN_CENTER)
                self2.update()

    Voilà j'espère t'avoir donnée un peu d'élément de réponse, je suis pas sur de mon code, pas testé mais cela devrait ressemblé à quelque chose dans le genre. Bon courage

    EDIT: Pas vu que tu avais trouvé ta réponse. En revanche si tu as mieux niveau actualisation je suis prenneur car ma barre n'est pas toujours top. Merci

  3. #3
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Cool merci, c'est exactement la démarche que j'avais, sauf que je faisais pas d'appel a Update(), comme un couillon... Merci

    Le seul ennui avec le TxtCtrl c'est que j'ai un ascenceur sur le côté, et j'ai pas trouvé de paramètre style permettant de le virer... sinon, ça marche très bien, hormis aussi un fond blac (mais bon, je suis sur la piste (le SetBackgroundColour() n'a pas d'effet sur ce widget)). Je trouve comment tout bien mettre, et je poste un exemple

  4. #4
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Et voici donc un exemple avec un TextCtrl :
    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
    import wx, time
     
    class Frame(wx.Frame):
        def __init__(s,parent=None):
            wx.Frame.__init__(s,parent,-1,'clock')
            panel=wx.Panel(s,-1)
            s.txtC=wx.TextCtrl(panel,-1,style=wx.NO_BORDER|wx.TE_READONLY,size=(100,50))
            s.txtC.SetBackgroundStyle(wx.BG_STYLE_COLOUR)
            s.txtC.SetBackgroundColour((236,233,216,255))
            font=wx.Font(12, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
            s.txtC.SetFont(font)
            s.txtC.SetValue('%s:%s:%s'%tuple([str(x).rjust(2,'0') for x in time.localtime()[3:6]]))
            s.SetSize(s.txtC.GetSize())
            s.timer=wx.Timer(s)
            s.Bind(wx.EVT_TIMER,s.onTimer,s.timer)
            s.timer.Start(1000)
        def onTimer(s,e=None):
            s.txtC.Clear()
            s.txtC.SetValue('%s:%s:%s'%tuple([str(x).rjust(2,'0') for x in time.localtime()[3:6]]))
     
     
    class App(wx.App):
        def OnInit(s):
            frame=Frame()
            frame.Show()
            return True
     
    def main():
        app=App(redirect=False)
        app.MainLoop()
     
    if __name__=='__main__':
        main()

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Salut,

    Utilise MonStaticText.SetLabel("mon nouveau label")

    A +

  6. #6
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Encore mieux, excellent ! Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Menu déroulant qui modifie du texte
    Par oxa dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/11/2005, 09h20
  2. [FLASH MX2004] Modifier du texte
    Par drizztoli dans le forum Flash
    Réponses: 3
    Dernier message: 28/05/2005, 10h03
  3. Réponses: 5
    Dernier message: 31/01/2005, 09h32
  4. modifier les texte dans un <span>
    Par Flobel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/12/2004, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo