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 :

[wxPython] Barre d'outils


Sujet :

wxPython

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 119
    Par défaut [wxPython] Barre d'outils
    Bonjour,
    Je me suis fait un petit test de création d'une barre d'outils (contient seulement des boutons et un menu, aucun traitement n'ai effectué lors d'actions de l'utilisateur) mais je tombe sur 2 problèmes d'affichages:
    • Une barre grise se dessine au-dessus de la ToolBar que je crée.
    Je pense que c'est à cause des BoxSizer que je crée puisque dans ma version précédente où elles n'y étaient pas il n'y avait pas cette bande grise (superbe déduction !!!!!!!)
    • Les textures des boutons ne s'affichent pas correctement.
    Je prend pour les textures des images .png 32x32 et il n'apparait que le coin supérieur gauche sur le bouton. Dans un tutoriel, il est utilisé des images 24x24 mais sa ne marche pas non plus.
    (Je me demander si la taille du rendu des boutons pouvait être modifié pour les agrandir un peu ???)

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    import wx
    
    ID_TEXTURE_0 = 100
    ...
    ID_TEXTURE_5 = 105
    
    class Fenetre(wx.Frame):
        def __init__(self, titre):
            wx.Frame.__init__(self, parent = None, id = 1, title = titre, size = (155,70), style = wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN | wx.FRAME_TOOL_WINDOW)
    
            # Création du menu
            menuA = wx.Menu(style = wx.MENU_TEAROFF)
            menuA.Append(...)
            ...
            menuB = wx.Menu(style = wx.MENU_TEAROFF)
            menuB.Append(...)
            ...
            menuBarre = wx.MenuBar()
            menuBarre.Append(menuA, "&Fichier")
            menuBarre.Append(menuB, "&Image")
            self.SetMenuBar(menuBarre)
    
            # Création d'un panneau
            conteneur = wx.Panel(self, 1)
            # Création de la barre d'outils
            outils = wx.ToolBar(conteneur, 1)
            outils.AddSimpleTool(ID_TEXTURE_0, wx.Bitmap("texture_0.png", wx.BITMAP_TYPE_PNG), shortHelpString = "...", longHelpString = "...")
            ...
            outils.AddSimpleTool(ID_TEXTURE_5, wx.Bitmap("texture_5.png", wx.BITMAP_TYPE_PNG), shortHelpString = "...", longHelpString = "...")
            outils.Realize()
            self.SetToolBar(outils)
    
            # Création des sizers
            panelSizer = wx.BoxSizer(wx.HORIZONTAL)
            panelSizer.Add(outils, 1, wx.LEFT )
            conteneur.SetSizer(panelSizer)
    
            frameSizer = wx.BoxSizer(wx.VERTICAL)
            frameSizer.Add(conteneur, 1, wx.TOP)
            self.SetSizer(frameSizer)
            frameSizer.SetSizeHints(self)
    
    class BarreDOutils(wx.App):
        def OnInit(self):
            fen = Fenetre("Barre d'outils")
            fen.Show(True)
            self.SetTopWindow(fen)
            return True
    
    app = BarreDOutils()
    app.MainLoop()
    Je voudrais savoir quels sont les erreurs que j'ai pu commettre (sachant que j'ai commencé wxPython ce matin, j'ai encore bcp à apprendre)

    Merci

    EDIT : J'ai mis en pièces jointes les images de la barre d'outil à la création et après redimensionnement.
    Images attachées Images attachées   

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 119
    Par défaut
    Si les textures des boutons du menu sont plus grandes que la taille des boutons (par défaut 16x16) on peut les agrandir avec une fonction de la classe Toolbar. ( Merci à Franck.H pour le renseignement. )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            ...
            # Création de la barre d'outils
            outils = wx.ToolBar(conteneur, 1)
            outils.SetToolBitmapSize((32,32))
            outils.AddSimpleTool(...)
            ...
    Pour ce qui est de la barre grise, elle est causé par une instruction en trop (la barre est en fait ajouter 2 fois mais n'est afficher qu'une fois dans la partie inférieure).

    Il faut donc supprimer la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            self.SetToolBar(outils)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 119
    Par défaut
    Re
    J'ai un autre problème sur ma barre d'outils : maintenant que j'ai redimensionné la taille de mes boutons à celle de mes images, celles-ci ne s'affichent pas correctement, apparemment le noir de mes textures seraient perçu comme de la transparence ce qui donne quelque chose de pas terrible.

    Si vous pouvez m'aider, il manque peut-être une instruction dans mon code (cf 1er post) ???

    Merci

    EDIT : Toutes mes images possèdent de la transparance (RGBA) comme le permet leur format (.png) pour pouvoir bien visualiser les effets des boutons.

    J'ai mis en pièces jointe un exemple de bouton mal texturé et l'image correspondante à coté
    Images attachées Images attachées  

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 119
    Par défaut
    J'ai encore un autre problème à résoudre (en plus de celui du post précédent) : je crée une toolbar vertical mais le dernier bouton ajouté à celle-ci est coupé pour je ne sais quelle raison, si vous vous voyez pourquoi ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            ...
            TOOLBAR = wx.ToolBar(self, 1, style = wx.TB_VERTICAL)
            TOOLBAR.SetToolBitmapSize((15,15))
            TOOLBAR.AddSimpleTool(ID_PLUS,  wx.Bitmap("images\\plus.png",  wx.BITMAP_TYPE_PNG))
            TOOLBAR.AddSimpleTool(ID_MOINS, wx.Bitmap("images\\moins.png", wx.BITMAP_TYPE_PNG))
            ...
    Merci
    Images attachées Images attachées  

Discussions similaires

  1. [] Raccourci clavier pour bouton d'une barre d'outil
    Par Sébastien dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 24/03/2003, 17h02
  2. [VB6]Barre d'outil
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/02/2003, 11h48
  3. [VBA-E] Barre d'outil créée automatiquement
    Par gjeff dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2002, 16h45
  4. [VB6] [Interface] Icones de boutons de barre d'outils
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/09/2002, 15h50
  5. Barre d'outils
    Par MANU_2 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/08/2002, 22h48

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