Added the sample code from wxPython In Action to the samples dir
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
101
wxPython/samples/wxPIA_book/Chapter-08/splitter.py
Normal file
101
wxPython/samples/wxPIA_book/Chapter-08/splitter.py
Normal file
@@ -0,0 +1,101 @@
|
||||
import wx
|
||||
|
||||
class SplitterExampleFrame(wx.Frame):
|
||||
def __init__(self, parent, title):
|
||||
wx.Frame.__init__(self, parent, title=title)
|
||||
self.MakeMenuBar()
|
||||
self.minpane = 0
|
||||
self.initpos = 0
|
||||
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.p1.SetBackgroundColour("pink")
|
||||
self.p2.SetBackgroundColour("sky blue")
|
||||
self.p1.Hide()
|
||||
self.p2.Hide()
|
||||
|
||||
self.sp.Initialize(self.p1)
|
||||
|
||||
self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGING,
|
||||
self.OnSashChanging, self.sp)
|
||||
self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGED,
|
||||
self.OnSashChanged, self.sp)
|
||||
|
||||
|
||||
def MakeMenuBar(self):
|
||||
menu = wx.Menu()
|
||||
item = menu.Append(-1, "Split horizontally")
|
||||
self.Bind(wx.EVT_MENU, self.OnSplitH, item)
|
||||
self.Bind(wx.EVT_UPDATE_UI, self.OnCheckCanSplit, item)
|
||||
item = menu.Append(-1, "Split vertically")
|
||||
self.Bind(wx.EVT_MENU, self.OnSplitV, item)
|
||||
self.Bind(wx.EVT_UPDATE_UI, self.OnCheckCanSplit, item)
|
||||
item = menu.Append(-1, "Unsplit")
|
||||
self.Bind(wx.EVT_MENU, self.OnUnsplit, item)
|
||||
self.Bind(wx.EVT_UPDATE_UI, self.OnCheckCanUnsplit, item)
|
||||
|
||||
menu.AppendSeparator()
|
||||
item = menu.Append(-1, "Set initial sash position")
|
||||
self.Bind(wx.EVT_MENU, self.OnSetPos, item)
|
||||
item = menu.Append(-1, "Set minimum pane size")
|
||||
self.Bind(wx.EVT_MENU, self.OnSetMin, item)
|
||||
|
||||
menu.AppendSeparator()
|
||||
item = menu.Append(wx.ID_EXIT, "E&xit")
|
||||
self.Bind(wx.EVT_MENU, self.OnExit, item)
|
||||
|
||||
mbar = wx.MenuBar()
|
||||
mbar.Append(menu, "Splitter")
|
||||
self.SetMenuBar(mbar)
|
||||
|
||||
|
||||
def OnSashChanging(self, evt):
|
||||
print "OnSashChanging:", evt.GetSashPosition()
|
||||
|
||||
def OnSashChanged(self, evt):
|
||||
print "OnSashChanged:", evt.GetSashPosition()
|
||||
|
||||
|
||||
def OnSplitH(self, evt):
|
||||
self.sp.SplitHorizontally(self.p1, self.p2, self.initpos)
|
||||
|
||||
def OnSplitV(self, evt):
|
||||
self.sp.SplitVertically(self.p1, self.p2, self.initpos)
|
||||
|
||||
def OnCheckCanSplit(self, evt):
|
||||
evt.Enable(not self.sp.IsSplit())
|
||||
|
||||
def OnCheckCanUnsplit(self, evt):
|
||||
evt.Enable(self.sp.IsSplit())
|
||||
|
||||
def OnUnsplit(self, evt):
|
||||
self.sp.Unsplit()
|
||||
|
||||
def OnSetMin(self, evt):
|
||||
minpane = wx.GetNumberFromUser(
|
||||
"Enter the minimum pane size",
|
||||
"", "Minimum Pane Size", self.minpane,
|
||||
0, 1000, self)
|
||||
if minpane != -1:
|
||||
self.minpane = minpane
|
||||
self.sp.SetMinimumPaneSize(self.minpane)
|
||||
|
||||
def OnSetPos(self, evt):
|
||||
initpos = wx.GetNumberFromUser(
|
||||
"Enter the initial sash position (to be used in the Split call)",
|
||||
"", "Initial Sash Position", self.initpos,
|
||||
-1000, 1000, self)
|
||||
if initpos != -1:
|
||||
self.initpos = initpos
|
||||
|
||||
|
||||
def OnExit(self, evt):
|
||||
self.Close()
|
||||
|
||||
|
||||
app = wx.PySimpleApp(redirect=True)
|
||||
frm = SplitterExampleFrame(None, "Splitter Example")
|
||||
frm.SetSize((600,500))
|
||||
frm.Show()
|
||||
app.SetTopWindow(frm)
|
||||
app.MainLoop()
|
Reference in New Issue
Block a user