git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			102 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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()
 |