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 :

SplitterWindow: bloquer le sash


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut SplitterWindow: bloquer le sash
    Bonjour,
    Quelqu'un connait-il un moyen de bloquer le sash dans une splitter window, lorsqu'on resize la frame la contenant ?

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,

    peux-tu poster un code qui reproduit ton problème?

    Merci

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    Citation Envoyé par pacificator Voir le message
    Bonjour,

    peux-tu poster un code qui reproduit ton problème?

    Merci
    Bon,voilà...

    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
    #! /usr/bin/python
    import wx
    class SplitterExampleFrame(wx.Frame):
        def __init__(self,parent,title):
            wx.Frame.__init__(self,parent,title=title)
            self.sp=wx.SplitterWindow(self)
            self.p1=wx.Panel(self.sp,style=wx.SUNKEN_BORDER)
            self.p2=wx.Panel(self.sp,style=wx.SUNKEN_BORDER)
            self.sp.SplitVertically(self.p1,self.p2,100)
     
    #Test module
    if __name__ == '__main__':
        app=wx.App(0)
        frame=SplitterExampleFrame(None,"Splitter Example")
        frame.Show()
        app.MainLoop()

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Une première question me vient à l'esprit. Quand tu dis 'bloquer le sash', tu veux dire le même rapport panneau à panneau ou la même dimension pour un seul des deux panneaux ?

    Quand je regarde ici
    http://www.wxpython.org/docs/api/wx....dow-class.html
    je vois qu'il ya plusieurs moyens de gérer la position du sash, mais il faudra peut-être conserver dans des références l'état de ton sash pour cela.

    L'exemple de code que demandais pacificator, c'est évidemment un exemple avec un resize event qui montre le problème.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    Salut VinsS,
    Ce n'est pas à proprement parler, un 'problème'; c'est le comportement des SplitterWindows qui m'interpelle.
    Comme chacun sait, le sash est un animal peureux qui se sauve à l'approche d'un malheureux bord de frame.
    Je me demandais si quelqu'un avait trouvé une astuce pour le rendre plus courageux; une sorte de sash Bene Gesserit qui laisserait passer le bord au dessus de lui sans fuir tel le pleutre.
    En d'autres termes, y a t'il un moyen pour éviter que le resize du container n'affecte pas le comportement du contenu, en l'occurence, une splitter window ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    Bonjour ,
    Bon, j'ai bricolé un truc; le problème, c'est qu'il faut survoler la fenêtre après son redimensionnement. Mais ça, en général on le fait d'instinct...
    Si quelqu'un a une idée ...

    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
    # -*- coding:utf-8 -*-
    import wx
     
    class SplitterExampleFrame(wx.Frame):
        def __init__(self,parent):
            wx.Frame.__init__(self,parent)
     
    #Mise en place de la fenêtre splittée (2 panels dans un splitter)
            self.splitter=wx.SplitterWindow(self)
            self.panel1=wx.Panel(self.splitter,style=wx.SUNKEN_BORDER)
            self.panel2=wx.Panel(self.splitter,style=wx.SUNKEN_BORDER)
            self.panel1.SetBackgroundColour("pink")
            self.panel2.SetBackgroundColour("sky blue")
            self.splitter.SplitVertically(self.panel1,self.panel2,0)
     
    #Handlers
            self.panel1.Bind(wx.EVT_ENTER_WINDOW,self.on_panel_enter)
            self.panel2.Bind(wx.EVT_ENTER_WINDOW,self.on_panel_enter)
            self.Bind(wx.EVT_SIZE,self.on_size)
     
        def on_panel_enter(self,evt):
            #Active les évenements splitter quand le mulot survole un des 2 panels
            self.splitter.SetEvtHandlerEnabled(True)
            #Récupération du sash
            self.splitter.SetSashPosition(self.splitter.GetSashPosition(),True)
            evt.Skip()
     
        def on_size(self,evt):
            #Désactive les évenements splitter quand on resize la frame
            self.splitter.SetEvtHandlerEnabled(False)
            #Et ça, c'est pas très joli joli ...
            #Je donne à chaque panel la taille de la fenêtre !
            self.panel1.SetSize(self.GetSize())
            self.panel2.SetSize(self.GetSize())
            evt.Skip()
     
    #Test module
    if __name__ == '__main__':
        app=wx.App(0)
        frame=SplitterExampleFrame(None)
        frame.Show()
        frame.splitter.SetEvtHandlerEnabled(True)
        app.MainLoop()

Discussions similaires

  1. Est-il possible de bloquer le reverse engineering ?
    Par fugi dans le forum Assembleur
    Réponses: 39
    Dernier message: 31/07/2007, 02h33
  2. [VB6] Bloquer Ctrl + Alt + Suppr
    Par e-t172 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/07/2004, 12h21
  3. [RaveReport] - Bloquer groupe sur une page
    Par muaddib dans le forum Rave
    Réponses: 3
    Dernier message: 25/02/2003, 16h21
  4. Bloquer le téléchargement de certains types de fichiers
    Par Nikos dans le forum Développement
    Réponses: 4
    Dernier message: 23/12/2002, 20h54
  5. Bloquer le lecteur cd
    Par krusaf dans le forum MFC
    Réponses: 3
    Dernier message: 07/07/2002, 13h09

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