📄 foldpanelbar.py
字号:
def __init__(self, parent, id=wx.ID_ANY, title="", pos=wx.DefaultPosition,
size=(400,300), style=wx.DEFAULT_FRAME_STYLE):
wx.Frame.__init__(self, parent, id, title, pos, size, style)
self.SetIcon(GetMondrianIcon())
self.SetMenuBar(self.CreateMenuBar())
self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
self.statusbar.SetStatusWidths([-4, -3])
self.statusbar.SetStatusText("Andrea Gavana @ 23 Mar 2005", 0)
self.statusbar.SetStatusText("Welcome to wxPython!", 1)
self.CreateFoldBar()
def CreateFoldBar(self, vertical=True):
if vertical:
self.SetSize((500,600))
else:
self.SetSize((700,300))
newstyle = (vertical and [fpb.FPB_VERTICAL] or [fpb.FPB_HORIZONTAL])[0]
bar = fpb.FoldPanelBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize,
fpb.FPB_DEFAULT_STYLE | newstyle, fpb.FPB_COLLAPSE_TO_BOTTOM)
item = bar.AddFoldPanel("Test me", collapsed=False)
button1 = wx.Button(item, wx.ID_ANY, "Collapse Me")
button1.Bind(wx.EVT_BUTTON, self.OnCollapseMe)
bar.AddFoldPanelWindow(item, button1, fpb.FPB_ALIGN_LEFT)
item = bar.AddFoldPanel("Test me too!", collapsed=True)
button2 = wx.Button(item, wx.ID_ANY, "Expand First One")
button2.Bind(wx.EVT_BUTTON, self.OnExpandMe)
bar.AddFoldPanelWindow(item, button2)
bar.AddFoldPanelSeparator(item)
newfoldpanel = FoldTestPanel(item, wx.ID_ANY)
bar.AddFoldPanelWindow(item, newfoldpanel)
bar.AddFoldPanelSeparator(item)
bar.AddFoldPanelWindow(item, wx.TextCtrl(item, wx.ID_ANY, "Comment"),
fpb.FPB_ALIGN_LEFT, fpb.FPB_DEFAULT_SPACING, 20)
item = bar.AddFoldPanel("Some Opinions ...", collapsed=False)
bar.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "I Like This"))
if vertical:
# do not add this for horizontal for better presentation
bar.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "And also this"))
bar.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "And gimme this too"))
bar.AddFoldPanelSeparator(item)
bar.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "Check this too if you like"))
if vertical:
# do not add this for horizontal for better presentation
bar.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "What about this"))
item = bar.AddFoldPanel("Choose one ...", collapsed=False)
bar.AddFoldPanelWindow(item, wx.StaticText(item, wx.ID_ANY, "Enter your comment"))
bar.AddFoldPanelWindow(item, wx.TextCtrl(item, wx.ID_ANY, "Comment"),
fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 20)
if hasattr(self, "pnl"):
self.pnl.Destroy()
self.pnl = bar
size = self.GetClientSize()
self.pnl.SetDimensions(0, 0, size.GetWidth(), size.GetHeight())
def CreateMenuBar(self):
FoldPanelBarTest_Quit = wx.NewId()
FoldPanelBarTest_About = wx.NewId()
FoldPanelBarTest_Horizontal = wx.NewId()
FoldPanelBarTest_Vertical = wx.NewId()
menuFile = wx.Menu()
menuFile.Append(FoldPanelBarTest_Horizontal, "&Horizontal\tAlt-H")
menuFile.Append(FoldPanelBarTest_Vertical, "&Vertical\tAlt-V")
menuFile.AppendSeparator()
menuFile.Append(FoldPanelBarTest_Quit, "E&xit\tAlt-X", "Quit This Program")
helpMenu = wx.Menu()
helpMenu.Append(FoldPanelBarTest_About, "&About...\tF1", "Show About Dialog")
self.FoldPanelBarTest_Vertical = FoldPanelBarTest_Vertical
self.FoldPanelBarTest_Horizontal = FoldPanelBarTest_Horizontal
self.Bind(wx.EVT_MENU, self.OnQuit, id=FoldPanelBarTest_Quit)
self.Bind(wx.EVT_MENU, self.OnAbout, id=FoldPanelBarTest_About)
self.Bind(wx.EVT_MENU, self.OnOrientation, id=FoldPanelBarTest_Horizontal)
self.Bind(wx.EVT_MENU, self.OnOrientation, id=FoldPanelBarTest_Vertical)
value = wx.MenuBar()
value.Append(menuFile, "&File")
value.Append(helpMenu, "&Help")
return value
def OnOrientation(self, event):
self.CreateFoldBar(event.GetId() == self.FoldPanelBarTest_Vertical)
def OnQuit(self, event):
# True is to force the frame to close
self.Close(True)
def OnAbout(self, event):
msg = "This is the about dialog of the FoldPanelBarTest application.\n\n" + \
"Welcome To wxPython " + wx.VERSION_STRING + "!!"
dlg = wx.MessageDialog(self, msg, "About FoldPanelBarTest",
wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
def OnCollapseMe(self, event):
item = self.pnl.GetFoldPanel(0)
self.pnl.Collapse(item)
def OnExpandMe(self, event):
self.pnl.Expand(self.pnl.GetFoldPanel(0))
self.pnl.Collapse(self.pnl.GetFoldPanel(1))
# ----------------------------------------------------------------------------
# NotCollapsed Implementation
# ----------------------------------------------------------------------------
class NotCollapsed(wx.Frame):
def __init__(self, parent, id=wx.ID_ANY, title="", pos=wx.DefaultPosition,
size=(400,300), style=wx.DEFAULT_FRAME_STYLE):
wx.Frame.__init__(self, parent, id, title, pos, size, style)
self.SetIcon(GetMondrianIcon())
self.SetMenuBar(self.CreateMenuBar())
self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
self.statusbar.SetStatusWidths([-4, -3])
self.statusbar.SetStatusText("Andrea Gavana @ 23 Mar 2005", 0)
self.statusbar.SetStatusText("Welcome to wxPython!", 1)
pnl = fpb.FoldPanelBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize,
fpb.FPB_DEFAULT_STYLE | fpb.FPB_VERTICAL)
item = pnl.AddFoldPanel("Test Me", collapsed=False)
button1 = wx.Button(item, wx.ID_ANY, "Collapse Me")
pnl.AddFoldPanelWindow(item, button1, fpb.FPB_ALIGN_LEFT)
pnl.AddFoldPanelSeparator(item)
button1.Bind(wx.EVT_BUTTON, self.OnCollapseMe)
item = pnl.AddFoldPanel("Test Me Too!", collapsed=True)
button2 = wx.Button(item, wx.ID_ANY, "Expand First One")
pnl.AddFoldPanelWindow(item, button2, fpb.FPB_ALIGN_LEFT)
pnl.AddFoldPanelSeparator(item)
button2.Bind(wx.EVT_BUTTON, self.OnExpandMe)
newfoldpanel = FoldTestPanel(item, wx.ID_ANY)
pnl.AddFoldPanelWindow(item, newfoldpanel)
pnl.AddFoldPanelSeparator(item)
pnl.AddFoldPanelWindow(item, wx.TextCtrl(item, wx.ID_ANY, "Comment"),
fpb.FPB_ALIGN_LEFT, fpb.FPB_DEFAULT_SPACING, 20)
item = pnl.AddFoldPanel("Some Opinions ...", collapsed=False)
pnl.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "I Like This"))
pnl.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "And Also This"))
pnl.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "And Gimme This Too"))
pnl.AddFoldPanelSeparator(item)
pnl.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "Check This Too If You Like"))
pnl.AddFoldPanelWindow(item, wx.CheckBox(item, wx.ID_ANY, "What About This"))
item = pnl.AddFoldPanel("Choose One ...", collapsed=False)
pnl.AddFoldPanelWindow(item, wx.StaticText(item, wx.ID_ANY, "Enter Your Comment"))
pnl.AddFoldPanelWindow(item, wx.TextCtrl(item, wx.ID_ANY, "Comment"),
fpb.FPB_ALIGN_WIDTH, fpb.FPB_DEFAULT_SPACING, 20, 20)
self.pnl = pnl
def CreateMenuBar(self):
FoldPanelBarTest_Quit = wx.NewId()
FoldPanelBarTest_About = wx.NewId()
menuFile = wx.Menu()
menuFile.Append(FoldPanelBarTest_Quit, "E&xit\tAlt-X", "Quit This Program")
helpMenu = wx.Menu()
helpMenu.Append(FoldPanelBarTest_About, "&About...\tF1", "Show About Dialog")
self.Bind(wx.EVT_MENU, self.OnQuit, id=FoldPanelBarTest_Quit)
self.Bind(wx.EVT_MENU, self.OnAbout, id=FoldPanelBarTest_About)
value = wx.MenuBar()
value.Append(menuFile, "&File")
value.Append(helpMenu, "&Help")
return value
# Event Handlers
def OnQuit(self, event):
# True is to force the frame to close
self.Close(True)
def OnAbout(self, event):
msg = "This is the about dialog of the FoldPanelBarTest application.\n\n" + \
"Welcome To wxPython " + wx.VERSION_STRING + "!!"
dlg = wx.MessageDialog(self, msg, "About FoldPanelBarTest",
wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
def OnCollapseMe(self, event):
item = self.pnl.GetFoldPanel(0)
self.pnl.Collapse(item)
def OnExpandMe(self, event):
self.pnl.Expand(self.pnl.GetFoldPanel(0))
self.pnl.Collapse(self.pnl.GetFoldPanel(1))
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
class TestPanel(wx.Panel):
def __init__(self, parent, log):
self.log = log
wx.Panel.__init__(self, parent, -1)
vsizer = wx.BoxSizer(wx.VERTICAL)
b = wx.Button(self, -1, "FoldPanelBar Extended Demo")
vsizer.Add(b, 0, wx.ALL, 5)
self.Bind(wx.EVT_BUTTON, self.OnButton1, b)
b = wx.Button(self, -1, "FoldPanelBar Collapsed Demo")
vsizer.Add(b, 0, wx.ALL, 5)
self.Bind(wx.EVT_BUTTON, self.OnButton2, b)
b = wx.Button(self, -1, "FoldPanelBar NotCollapsed Demo")
vsizer.Add(b, 0, wx.ALL, 5)
self.Bind(wx.EVT_BUTTON, self.OnButton3, b)
bdr = wx.BoxSizer()
bdr.Add(vsizer, 0, wx.ALL, 50)
self.SetSizer(bdr)
def OnButton1(self, evt):
frame = Extended(self, title="FoldPanelBar Extended Demo")
frame.Show()
def OnButton2(self, evt):
frame = Collapsed(self, title="FoldPanelBar Collapsed Demo")
frame.Show()
def OnButton3(self, evt):
frame = NotCollapsed(self, title="FoldPanelBar NotCollapsed Demo")
frame.Show()
#---------------------------------------------------------------------------
def runTest(frame, nb, log):
win = TestPanel(nb, log)
return win
#---------------------------------------------------------------------------
overview = fpb.__doc__
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -