Bonjour,
Quelqu'un connait-il un moyen de bloquer le sash dans une splitter window, lorsqu'on resize la frame la contenant ?
Bonjour,
Quelqu'un connait-il un moyen de bloquer le sash dans une splitter window, lorsqu'on resize la frame la contenant ?
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()
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.
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 ?
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()
Partager