Yes, you well understood, but for me it is not working as it should. In both frames the sashpositition of the leftmost splitter is working fine. But in the first frame(the one with the outer notebook), the sashposition from the right splitter does not take in consideration the given position.
(this test was with debian and python-wxgtk2.6)
now, where the things get worse, i upgrade the version to python-wxgtk2.8 and in both frames the sashposition of the rigthmost is not working well.
But in the first frame none of the positions are considered.
Humberto
ps: I dont ve a window pc to test it on :s
This code seems to work ok for me on MSW. Both frames have the left side
of the mainsplitter at 200 width. Then, the left panel of splitter 2 in
both frame is also 200 width. Or am I misunderstanding what you want?
Kyle Rickey
···
-----Original Message-----
From: Humberto Abdelnur [mailto:humberto.abdelnur@loria.fr] Sent: Thursday, October 25, 2007 4:01 AM
To: wxpython-users@lists.wxwidgets.org
Subject: Re: [wxPython-users] problem setting the sashposition of a
SplitterWindow
Hi, thanks a lot for the reply, in fact that worked out. But i tried to
applied to my real code and it didnt fix it :s
I guess there is something buggy around it. The problem also arise when
there are inner notebooks.
I added a few things to the previous example to show it off. I also
tried to play with the order in which i add pages and split the
splitters, but i didnt find any results.
For the example, it creates two frames, one with an inner notebook and
the other not.
thanks again,
Humberto
import wx
class MyFrame(wx.Frame):
def init (self, parent, id, title, createouterNotebook):
wx.Frame. init (self, parent, id, title, wx.DefaultPosition,
wx.Size(600, 300))
if createouterNotebook:
outerpanel = wx.Panel(self)
outerpanelsizer = wx.BoxSizer()
outernotebook = wx.Notebook(outerpanel)
innerpanel = wx.Panel(outernotebook)
else:
innerpanel = wx.Panel(self)
innerpanelsizer = wx.BoxSizer()
mainsplitter = wx.SplitterWindow(innerpanel, -1)
A = wx.Panel(mainsplitter, -1)
A.SetBackgroundColour(wx.WHITE)
B = wx.Panel(mainsplitter, -1)
############---Panel B----###################
vboxPanelB = wx.BoxSizer()
notebookPanelB = wx.Notebook(B)
pagePanelB = wx.Panel(notebookPanelB)
sizerpagePanelB = wx.BoxSizer()
splitter2 = wx.SplitterWindow(pagePanelB, -1)
B 1 = wx.Panel(splitter2, -1)
B 1.SetBackgroundColour(wx.LIGHT GREY)
B 2 = wx.Panel(splitter2, -1)
B 2.SetBackgroundColour(wx.WHITE)
sizerpagePanelB.Add(splitter2, 2, wx.EXPAND)
pagePanelB.SetSizer(sizerpagePanelB)
notebookPanelB.AddPage(pagePanelB, "innerPage")
vboxPanelB.Add(notebookPanelB, 2, wx.EXPAND)
B.SetSizer(vboxPanelB)
############---Panel B----###################
innerpanelsizer.Add(mainsplitter, 2, wx.EXPAND)
innerpanel.SetSizer(innerpanelsizer)
mainsplitter.SplitVertically(A, B, 200)
splitter2.SplitVertically(B 1, B 2, 200)
if createouterNotebook:
outernotebook.AddPage(innerpanel, "outerPage")
outerpanelsizer.Add(outernotebook, 2, wx.EXPAND)
outerpanel.SetSizer(outerpanelsizer)
self.Centre()
if name == ' main ':
app = wx.PySimpleApp()
frame = MyFrame(None, -1, 'splitterwindow(with outherNotebook)',
True)
frame.Show(True)
frame = MyFrame(None, -1, 'splitterwindow(witout outherNotebook)',
False)
frame.Show(True)
app.MainLoop()
A couple of things:
First, I made your window wider to 500 so you can see the all the panels
in the case of setting both sashes to 200. Second, you need to split
splitter2 vertically after you have split mainsplitter. I don't know why
that it, but it worked on my system. Lastly, you were using
splittersash[0] for splitter2 and splittersash[1] for mainsplitter, you
want them the other way around.
I hope this gets you on the right track. Modified code below.
import wx
class MyFrame(wx.Frame):
def init (self, parent, id, title, splittersash= (None,None)):
wx.Frame. init (self, parent, id, title, wx.DefaultPosition, wx.Size
(500, 300))
mainsplitter = wx.SplitterWindow(self, -1)
A = wx.Panel(mainsplitter, -1)
A.SetBackgroundColour(wx.LIGHT GREY)
B = wx.Panel(mainsplitter, -1)
vbox = wx.BoxSizer()
splitter2 = wx.SplitterWindow(B, -1)
B 1 = wx.Panel(splitter2, -1)
B 1.SetBackgroundColour(wx.LIGHT GREY)
B 2 = wx.Panel(splitter2, -1)
B 2.SetBackgroundColour(wx.WHITE)
vbox.Add(splitter2, 2, wx.EXPAND)
B.SetSizer(vbox)
mainsplitter.SplitVertically(A, B, splittersash[0])
splitter2.SplitVertically
(B 1, B 2, splittersash[1])
self.Centre()
if name == ' main ':
app = wx.PySimpleApp()
frame = MyFrame(None, -1, 'splitterwindow(FirstSash=100,SecondSash=100)', splittersash=(100,100))
frame.Show(True)
frame = MyFrame(None, -1, 'splitterwindow(FirstSash=100,SecondSash=200)', splittersash=(100,200))
frame.Show(True)
frame = MyFrame(None, -1, 'splitterwindow(FirstSash=200,SecondSash=200)', splittersash=(200,200))
frame.Show(True)
app.MainLoop()
From: Humberto Abdelnur [mailto:humberto.abdelnur@loria.fr] Sent: Wednesday, October 24, 2007 4:28 AM
To: wxpython-users@lists.wxwidgets.org
Subject: [wxPython-users] problem setting the sashposition of a
SplitterWindow
Hi everyone,
I'm having problems setting the sashposition of a SplitterWindow.
In fact, the problem arises every time that one SplitterWindow is a children of component, in my code a page of a notebook, and that notebook is one of the windows in a outsider SplitterWindow.
To illustrate the problem, an example code is at end of the mail.
It makes 3 frames, each one of them with a format like
----------------------------
A | B 1 | B 2 |
----------------------------
Where a main splitter is between panels A and B. And B itself has
another splitter with contains the Panels B 1 and B2.
So, the sashposition of the splitter (A,B) works perfectly. however, i
m not able to set the position for the splitter (B 1,B 2)
Thanks in advance,
Humberto
import wx
class MyFrame(wx.Frame):
def init (self, parent, id, title, splittersash= (None,None)):
wx.Frame. init (self, parent, id, title, wx.DefaultPosition, wx.Size(400, 300))
mainsplitter = wx.SplitterWindow(self, -1)
A = wx.Panel(mainsplitter, -1)
A.SetBackgroundColour(wx.LIGHT GREY)
B = wx.Panel(mainsplitter, -1)
vbox = wx.BoxSizer()
splitter2 = wx.SplitterWindow(B, -1)
B 1 = wx.Panel(splitter2, -1)
B 1.SetBackgroundColour(wx.LIGHT
GREY)
B 2 = wx.Panel(splitter2, -1)
B 2.SetBackgroundColour(wx.WHITE)
splitter2.SplitVertically(B 1, B 2, splittersash[0])
vbox.Add(splitter2, 1, wx.EXPAND
)
B.SetSizer(vbox)
mainsplitter.SplitVertically(A, B, splittersash[1])
self.Centre()
if name == ' main ':
app = wx.PySimpleApp()
frame = MyFrame(None, -1,
'splitterwindow(FirstSash=100,SecondSash=100)', splittersash=(100,100))
frame.Show(True)
frame = MyFrame(None, -1, 'splitterwindow(FirstSash=100,SecondSash=200)', splittersash=(100,200))
frame.Show(True)
frame = MyFrame(None, -1, 'splitterwindow(FirstSash=200,SecondSash=200)', splittersash=(200,200))
frame.Show(True)
app.MainLoop()
---------------------------------------------------------------------
To unsubscribe, e-mail: wxPython-users-unsubscribe@lists.wxwidgets.org
For additional commands, e-mail:
<mailto:wxPython-users-help@lists.wxwidgets.org> wxPython-users-help@lists.wxwidgets.org
--------------------------------------------------------------------- To
unsubscribe, e-mail: wxPython-users-unsubscribe@lists.wxwidgets.org For
additional commands, e-mail: wxPython-users-help@lists.wxwidgets.org