splitter.py

来自「wxPython的基本示例程序」· Python 代码 · 共 102 行

PY
102
字号
import wxclass 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()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?