Partage
  • Partager sur Facebook
  • Partager sur Twitter

wxPython et le wx.BoxSizer

    26 mai 2015 à 17:37:21

    Bonjour à tous,

    Voilà, j'étudie actuellement le Python, et plus précisément, le module wx, permettant de créer des interfaces graphiques.

    J'ai compris comment créer une Frame dérivée de la classe wx.Frame, cependant, j'éprouve certaines petites difficultés à bien comprendre les Sizer, permettant de calibrer l'affichage des boutons dans mon Panel.

    Dans l'exemple que je vous soumets ci-dessous, je crée une Frame dérivée de la classe wx.Frame, j'y introduis un Panel, et dans ce Panel, j'introduis 2 boutons permettant respectivement d'afficher un petit message et fermer l'application.

    Ma question est la suivante :

    Dans mon essai, mes 2 boutons s'affichent bien au centre de l'écran, mais comment devrais-je procéder si je souhaitais par exemple ajouter un troisième bouton qui s'alignerait juste au dessous de mon premier bouton, et un autre qui s'alignerait juste au dessous du second?

    Pourrais-je le faire simplement avec wx.BoxSizer, ou serait-il préférable d'utiliser un autre Sizer, comme le wx.GridSizer par exemple, ou un autre.

    Autre question :

    Pour l'encodage de mes scripts Python, j'utilise toujours l'UTF-8.

    Comment faire pour que mes commentaires puissent être accentués tout en restant dans cet encodage?

    Ou serait-il préférable que je bascule vers un autre encodage?

    Je remercie d'avance celui ou celle qui pourrait éclairer ma lanterne à ce sujet.

    Si vous constatez un quelconque défaut dans mon code, n'hésitez surtout pas à me le faire savoir.

    Voilà, en espérant que cette question ainsi que ces éventuelles réponses puissent rendre service à d'autres débutant comme moi dans le domaine du wxPython.

    Ah j'oubliais, j'utilise Python version 2.7.9 et wxPython version 3.0.2.0.

    # -*- coding: utf-8 -*-
    # fichier essai.py
    
    import wx  # importation du module wx
    
    class MyFrame(wx.Frame):
        """ Ceci est une Frame MyFrame derivee de wx.Frame.
        elle contient un argument :
        @ title : le titre de la Frame.
        """
        def __init__(self, title):
            """ Ceci est le constructeur de la classe MyFrame.
            """
            wx.Frame.__init__(self, parent=None, title=title) # La, on appelle le constructeur de la frame parente, et on lui transmet le parametre title
            # On fixe la valeur du parametre parent a None, pour que notre Frame soit la fenetre principale
            self.panel = wx.Panel(self) # Creation d'un Panel
            self.btnmsg = wx.Button(self.panel, label = "&Afficher un message") # Ajout d'un bouton dans le panel, permettant d'afficher un message lorsqu'on le clic
            self.btnclose = wx.Button(self.panel, label=" &Fermer") # Ajout d'un bouton Fermer dans le Panel
            vbox = wx.BoxSizer(wx.VERTICAL) # Creation d'un BoxSizer oriente verticalement
            hbox= wx.BoxSizer(wx.HORIZONTAL) # Ajout d'un BoxSizer oriente horizontalement.
            hbox.Add(item=self.btnmsg, proportion=0, flag=wx.ALIGN_CENTRE) # Ajout du btnmsg dans le Sizer horizontal
            hbox.Add(item=self.btnclose, proportion=0, flag=wx.ALIGN_CENTRE) # Ajout du btnclose dans le Sizer horizontal
            self.panel.SetSizer(hbox) # Association du Panel avec le Sizer horizontal
            vbox.Add(item=self.panel, proportion=1, flag=wx.ALIGN_CENTRE) # Ajout et centrage du Panel dans le Sizer vertical
            self.SetSizer(vbox) # Association de toute la Frame avec le Sizer vertical
            vbox.SetSizeHints(self) # Empechement d'un redimensionnement trop petit du Sizer vertical
            # evenement des boutons
            self.btnmsg.Bind(wx.EVT_BUTTON, self.onDisplay)
            self.btnclose.Bind(wx.EVT_BUTTON, self.onClose)
        def onDisplay(self, evt):
            """ Fonction permettant de gerer l'evenement du clic sur le btnmsg.
            """
            msg=wx.MessageDialog(parent = None, message = "Et voila le message !", caption="Affichage du message", style=wx.OK|wx.ICON_INFORMATION)
            msg.ShowModal()
            msg.Destroy()
        def onClose(self, evt):
            """ Fonction permettant de gerer l'evenement du clic sur le btnclose.
            """
            self.Destroy()
    # lancement de l'application
    if __name__ == '__main__':
        app = wx.App(redirect = False)
        frame=MyFrame("Essai")
        frame.Show(True)
        app.MainLoop()

    -
    Edité par Abdel792 28 mai 2015 à 21:00:22

    • Partager sur Facebook
    • Partager sur Twitter

    wxPython et le wx.BoxSizer

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown