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 :

Ecrire dans la StatusBar


Sujet :

wxPython

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 121
    Points : 64
    Points
    64
    Par défaut Ecrire dans la StatusBar
    Bonjour,
    J'ai deux petites questions concernant la StatusBar :
    J'ai une appli dans laquelle j'ai mis une StatusBar comprenant 3 zones :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.STB_Status = self.CreateStatusBar( 3, wx.ST_SIZEGRIP, STB_Status )
    1° Comment faire pour écrire du texte dans l'une des 3 zones
    2° Pourquoi quand j'écris ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.STB_Status.SetStatusText(u"Timer démarré...")
    les accents ne passent pas
    Bon, alors pour le 2°, j'ai trouvé ! J'avais oublié de mettre ça au début de mon fichier (shame on me) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    # -*- coding: utf-8 -*-
    Merci d'avance
    Images attachées Images attachées  

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    SetStatusText(texte, index)
    Soit self.SetStatusText("Timer démarré...", 1) pour la deuxième zone (l'index commence à 0)

    @+
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Autre méthode: SetFields

    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
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    from wx import *
     
     
    class MyFrame(wx.Frame):
        def __init__(self, parent, ID, title):
            wx.Frame.__init__(self, parent, ID, title,
                             wx.DefaultPosition, wx.Size(600, 300))
            self.sb = self.CreateStatusBar(3)
            self.sb.SetFields(('un', 'deux', 'trois'))
            wx.CallLater(6000, self.realvalue)
     
        def realvalue(self):
            self.sb.SetStatusText('zéro', 0)
            if self.sb.GetStatusText(1) == 'deux':
                self.sb.PushStatusText('un', 1)
            self.sb.SetStatusText('deux', 2)
     
     
    class MyApp(wx.App):
        def OnInit(self):
            frame = MyFrame(None, -1, "Test wxPython")
            frame.Show(True)
            self.SetTopWindow(frame)
            return True
     
     
    app = MyApp(0)
    app.MainLoop()
    Merci d'utiliser le forum pour les questions techniques.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Bonjour,

    SetStatusText(texte, index)
    Soit self.SetStatusText("Timer démarré...", 1) pour la deuxième zone (l'index commence à 0)

    @+
    Merci, c'est nickel !
    Un dernière petite question :
    J'ai finalement mis deux champs dans ma statusbar, mais j'aimerais jouer sur la taille de chaque champ (le premier pus petit que le deuxième), c'est possible ?

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Ben ma fois... Je ne connais pas wx mais suivant la doc (que vous devriez lire):
    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
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    from wx import *
     
     
    class MyFrame(wx.Frame):
        def __init__(self, parent, ID, title):
            wx.Frame.__init__(self, parent, ID, title,
                             wx.DefaultPosition, wx.Size(600, 300))
            self.sb = self.CreateStatusBar(2)
            self.sb.SetStatusText('petit', 0)
            self.sb.SetStatusText('grand', 1)
            self.sb.SetStatusWidths([-1, -9])
            wx.CallLater(3000, self.changevalue)
     
        def changevalue(self):
            self.sb.SetStatusText('grand', 0)
            self.sb.SetStatusText('petit', 1)
            self.sb.SetStatusWidths([-9, -1])
     
     
    class MyApp(wx.App):
        def OnInit(self):
            frame = MyFrame(None, -1, "Test wxPython")
            frame.Show(True)
            self.SetTopWindow(frame)
            return True
     
    app = MyApp(0)
    app.MainLoop()
    @+

    Edit : C'est sur 100 il me semble > 9 90% 1 10%
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    En fait, a la relecture de la doc, vous avez deux possibilités.
    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
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    from wx import *
     
     
    class MyFrame(wx.Frame):
        def __init__(self, parent, ID, title):
            wx.Frame.__init__(self, parent, ID, title,
                             wx.DefaultPosition, wx.Size(600, 300))
            self.sb = self.CreateStatusBar(2)
            self.sb.SetStatusText('petit', 0)
            self.sb.SetStatusText('grand', 1)
            self.sb.SetStatusWidths([60, 540])
            wx.CallLater(6000, self.changevalue)
     
        def changevalue(self):
            self.sb.SetStatusText('grand', 0)
            self.sb.SetStatusText('petit', 1)
            self.sb.SetStatusWidths([-2, -1])
     
     
    class MyApp(wx.App):
        def OnInit(self):
            frame = MyFrame(None, -1, "Test wxPython")
            frame.Show(True)
            self.SetTopWindow(frame)
            return True
     
    app = MyApp(0)
    app.MainLoop()
    SetStatusWidths([60, 540]) ou les valeurs sont en pixel. Comme ici nous avons wx.Size(600, 300) cela représente donc 10% (60) pour 0 (et 90% pour 1). Les tailles des champs son fixe en cas de redimensionnement (seul le dernier change)
    SetStatusWidths([-2, -1]) ou les valeurs sont sur la largeur totale des champs. Soit ici 2/3 et 1/3. En cas de redimensionnement les ratios restent fixe.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Merci pour toute ces infos.
    Je vais essayer ça dès lundi.
    Le problème de la doc c'est qu'elle est difficile a trouver, toujours en anglais et que j'ai peu de temps pour la lire...
    Mais je vais m'y mettre, c'est sûr...

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

Discussions similaires

  1. [VCL] Ajouter bouton dans un StatusBar
    Par Pedro dans le forum Composants VCL
    Réponses: 4
    Dernier message: 15/02/2005, 13h36
  2. Ecrire dans un fichier grace à un trigger ?
    Par zigoo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/10/2004, 20h03
  3. [VBS] Ecrire dans les Eventlog avec VBS
    Par Hakkou dans le forum VBScript
    Réponses: 1
    Dernier message: 04/10/2004, 14h50
  4. Réponses: 2
    Dernier message: 08/04/2004, 11h11
  5. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

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