.. wxPython Phoenix documentation This file was generated by Phoenix's sphinx generator and associated tools, do not edit by hand. Copyright: (c) 2011-2020 by Total Control Software License: wxWindows License .. include:: headings.inc .. module:: wx.lib.agw.flatnotebook .. currentmodule:: wx.lib.agw.flatnotebook .. highlight:: python .. _wx.lib.agw.flatnotebook: ========================================================================================================================================== |phoenix_title| **wx.lib.agw.flatnotebook** ========================================================================================================================================== :class:`~wx.lib.agw.flatnotebook.FlatNotebook` is a full, generic and owner-drawn implementation of :class:`Notebook`. Description =========== :class:`FlatNotebook` is a full implementation of the :class:`Notebook`, and designed to be a drop-in replacement for :class:`Notebook`. The API functions are similar so one can expect the function to behave in the same way. Some features: - The buttons are highlighted a la Firefox style; - The scrolling is done for bulks of tabs (so, the scrolling is faster and better); - The buttons area is never overdrawn by tabs (unlike many other implementations I saw); - It is a generic control; - Currently there are 6 different styles - VC8, VC 71, Standard, Fancy, Firefox 2 and Ribbon; - Mouse middle click can be used to close tabs; - A function to add right click menu for tabs (simple as :meth:`~FlatNotebook.SetRightClickMenu`); - All styles has bottom style as well (they can be drawn in the bottom of screen); - An option to hide 'X' button or navigation buttons (separately); - Gradient colouring of the selected tabs and border; - Support for drag 'n' drop of tabs, both in the same notebook or to another notebook; - Possibility to have closing button on the active tab directly; - Support for disabled tabs; - Colours for active/inactive tabs, and captions; - Background of tab area can be painted in gradient (VC8 style only); - Colourful tabs - a random gentle colour is generated for each new tab (very cool, VC8 style only); - Support for showing pages in "column/row mode", which means that all the pages will be shown in "tile" mode while the tabs are hidden; - Possibility to add a custom panel to show a logo or HTML documentation or whatever you like when there are no pages left in :class:`FlatNotebook`; - Try setting the tab area colour for the Ribbon Style. And much more. Usage ===== Usage example:: import wx import wx.lib.agw.flatnotebook as fnb class MyFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init(self, parent, -1, "FlatNotebook Demo") panel = wx.Panel(self) notebook = fnb.FlatNotebook(panel, -1) for i in range(3): caption = "Page %d"%(i+1) notebook.AddPage(self.CreatePage(notebook, caption), caption) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(notebook, 1, wx.ALL | wx.EXPAND, 5) panel.SetSizer(sizer) def CreatePage(self, notebook, caption): ''' Creates a simple :class:`Panel` containing a :class:`TextCtrl`. :param `notebook`: an instance of `FlatNotebook`; :param `caption`: a simple label. ''' p = wx.Panel(notebook) wx.StaticText(p, -1, caption, (20,20)) wx.TextCtrl(p, -1, "", (20,40), (150,-1)) return p # our normal wxApp-derived class, as usual app = wx.App(0) frame = MyFrame(None) app.SetTopWindow(frame) frame.Show() app.MainLoop() Window Styles ============= This class supports the following window styles: ================================ =========== ================================================== Window Styles Hex Value Description ================================ =========== ================================================== ``FNB_VC71`` 0x1 Use Visual Studio 2003 (VC7.1) style for tabs. ``FNB_FANCY_TABS`` 0x2 Use fancy style - square tabs filled with gradient colouring. ``FNB_TABS_BORDER_SIMPLE`` 0x4 Draw thin border around the page. ``FNB_NO_X_BUTTON`` 0x8 Do not display the 'X' button. ``FNB_NO_NAV_BUTTONS`` 0x10 Do not display the right/left arrows. ``FNB_MOUSE_MIDDLE_CLOSES_TABS`` 0x20 Use the mouse middle button for cloing tabs. ``FNB_BOTTOM`` 0x40 Place tabs at bottom - the default is to place them at top. ``FNB_NODRAG`` 0x80 Disable dragging of tabs. ``FNB_VC8`` 0x100 Use Visual Studio 2005 (VC8) style for tabs. ``FNB_X_ON_TAB`` 0x200 Place 'X' close button on the active tab. ``FNB_BACKGROUND_GRADIENT`` 0x400 Use gradients to paint the tabs background. ``FNB_COLOURFUL_TABS`` 0x800 Use colourful tabs (VC8 style only). ``FNB_DCLICK_CLOSES_TABS`` 0x1000 Style to close tab using double click. ``FNB_SMART_TABS`` 0x2000 Use `Smart Tabbing`, like ``Alt`` + ``Tab`` on Windows. ``FNB_DROPDOWN_TABS_LIST`` 0x4000 Use a dropdown menu on the left in place of the arrows. ``FNB_ALLOW_FOREIGN_DND`` 0x8000 Allows drag 'n' drop operations between different :class:`FlatNotebook`. ``FNB_HIDE_ON_SINGLE_TAB`` 0x10000 Hides the Page Container when there is one or fewer tabs. ``FNB_DEFAULT_STYLE`` 0x10020 :class:`FlatNotebook` default style. ``FNB_FF2`` 0x20000 Use Firefox 2 style for tabs. ``FNB_NO_TAB_FOCUS`` 0x40000 Does not allow tabs to have focus. ``FNB_RIBBON_TABS`` 0x80000 Use the Ribbon Tabs style ``FNB_HIDE_TABS`` 0x100000 Hides the Page Container allowing only keyboard navigation ``FNB_NAV_BUTTONS_WHEN_NEEDED`` 0x200000 Hides the navigation left/right arrows if all tabs fit ================================ =========== ================================================== Events Processing ================= This class processes the following events: ========================================= ================================================== Event Name Description ========================================= ================================================== ``EVT_FLATNOTEBOOK_PAGE_CHANGED`` Notify client objects when the active page in :class:`FlatNotebook` has changed. ``EVT_FLATNOTEBOOK_PAGE_CHANGING`` Notify client objects when the active page in :class:`FlatNotebook` is about to change. ``EVT_FLATNOTEBOOK_PAGE_CLOSED`` Notify client objects when a page in :class:`FlatNotebook` has been closed. ``EVT_FLATNOTEBOOK_PAGE_CLOSING`` Notify client objects when a page in :class:`FlatNotebook` is closing. ``EVT_FLATNOTEBOOK_PAGE_CONTEXT_MENU`` Notify client objects when a pop-up menu should appear next to a tab. ``EVT_FLATNOTEBOOK_PAGE_DROPPED`` Notify client objects when a tab has been dropped and re-arranged (on the *same* notebook) ``EVT_FLATNOTEBOOK_PAGE_DROPPED_FOREIGN`` Notify client objects when a tab has been dropped and re-arranged (from a foreign notebook) ========================================= ================================================== License And Version =================== :class:`FlatNotebook` is distributed under the wxPython license. Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 3.2 |function_summary| Functions Summary ==================================== ================================================================================ ================================================================================ :func:`~wx.lib.agw.flatnotebook.AdjustColour` Brighten/darken input colour by `percent` and adjust `alpha` channel if needed. :func:`~wx.lib.agw.flatnotebook.DrawButton` Draws a :class:`FlatNotebook` tab. :func:`~wx.lib.agw.flatnotebook.FormatColour` Convert the input `colour` into a valid :class:`wx.Colour` instance, using whatever typemap :func:`~wx.lib.agw.flatnotebook.LightColour` Brighten the input colour by a percentage. :func:`~wx.lib.agw.flatnotebook.PaintStraightGradientBox` Draws a gradient coloured box from `startColour` to `endColour`. :func:`~wx.lib.agw.flatnotebook.RandomColour` Creates a random colour. ================================================================================ ================================================================================ | |class_summary| Classes Summary =============================== ================================================================================ ================================================================================ `~wx.lib.agw.flatnotebook.FlatNotebook` The :class:`FlatNotebook` is a full implementation of the :class:`Notebook`, and designed to be `~wx.lib.agw.flatnotebook.FlatNotebookCompatible` This class is more compatible with the :class:`Notebook` API, especially regarding `~wx.lib.agw.flatnotebook.FlatNotebookDragEvent` This event will be sent when a ``EVT_FLATNOTEBOOK_PAGE_DRAGGED_FOREIGN`` is `~wx.lib.agw.flatnotebook.FlatNotebookEvent` This events will be sent when a ``EVT_FLATNOTEBOOK_PAGE_CHANGED``, `~wx.lib.agw.flatnotebook.FNBDragInfo` Stores all the information to allow drag and drop between different `~wx.lib.agw.flatnotebook.FNBDropSource` Give some custom UI feedback during the drag and drop operation in this `~wx.lib.agw.flatnotebook.FNBDropTarget` Class used to handle the :meth:`FlatNotebook.OnDropTarget() ` method when dragging and `~wx.lib.agw.flatnotebook.FNBRenderer` Parent class for the 6 renderers defined: `Standard`, `VC71`, `Fancy`, `Firefox 2`, `~wx.lib.agw.flatnotebook.FNBRendererDefault` This class handles the drawing of tabs using the standard renderer. `~wx.lib.agw.flatnotebook.FNBRendererFancy` This class handles the drawing of tabs using the `Fancy` renderer. `~wx.lib.agw.flatnotebook.FNBRendererFirefox2` This class handles the drawing of tabs using the `Firefox 2` renderer. `~wx.lib.agw.flatnotebook.FNBRendererMgr` This class represents a manager that handles all the 6 renderers defined `~wx.lib.agw.flatnotebook.FNBRendererRibbonTabs` This class handles the drawing of tabs using the `Ribbon Tabs` renderer. `~wx.lib.agw.flatnotebook.FNBRendererVC71` This class handles the drawing of tabs using the `VC71` renderer. `~wx.lib.agw.flatnotebook.FNBRendererVC8` This class handles the drawing of tabs using the `VC8` renderer. `~wx.lib.agw.flatnotebook.PageContainer` This class acts as a container for the pages you add to :class:`FlatNotebook`. `~wx.lib.agw.flatnotebook.PageInfo` This class holds all the information (caption, image, etc...) belonging to a `~wx.lib.agw.flatnotebook.TabNavigatorWindow` This class is used to create a modal dialog that enables `Smart Tabbing`, ================================================================================ ================================================================================ | .. toctree:: :maxdepth: 1 :hidden: wx.lib.agw.flatnotebook.FlatNotebook wx.lib.agw.flatnotebook.FlatNotebookCompatible wx.lib.agw.flatnotebook.FlatNotebookDragEvent wx.lib.agw.flatnotebook.FlatNotebookEvent wx.lib.agw.flatnotebook.FNBDragInfo wx.lib.agw.flatnotebook.FNBDropSource wx.lib.agw.flatnotebook.FNBDropTarget wx.lib.agw.flatnotebook.FNBRenderer wx.lib.agw.flatnotebook.FNBRendererDefault wx.lib.agw.flatnotebook.FNBRendererFancy wx.lib.agw.flatnotebook.FNBRendererFirefox2 wx.lib.agw.flatnotebook.FNBRendererMgr wx.lib.agw.flatnotebook.FNBRendererRibbonTabs wx.lib.agw.flatnotebook.FNBRendererVC71 wx.lib.agw.flatnotebook.FNBRendererVC8 wx.lib.agw.flatnotebook.PageContainer wx.lib.agw.flatnotebook.PageInfo wx.lib.agw.flatnotebook.TabNavigatorWindow Functions ------------ .. function:: AdjustColour(colour, percent, alpha=wx.ALPHA_OPAQUE) Brighten/darken input colour by `percent` and adjust `alpha` channel if needed. :param `colour`: colour object to adjust, an instance of :class:`wx.Colour`; :param `percent`: percent to adjust ``+`` (brighten) or ``-`` (darken); :param `alpha`: amount to adjust the alpha channel. :return: The modified colour. .. function:: DrawButton(dc, rect, focus, upperTabs) Draws a :class:`FlatNotebook` tab. :param `dc`: an instance of :class:`wx.DC`; :param `rect`: the tab's client rectangle; :param `focus`: ``True`` if the tab has focus, ``False`` otherwise; :param `upperTabs`: ``True`` if the tabs are at the top, ``False`` if they are at the bottom. .. function:: FormatColour(colour) Convert the input `colour` into a valid :class:`wx.Colour` instance, using whatever typemap accepted by wxWidgets/wxPython. :param `colour`: can be an instance of :class:`wx.Colour`, a 3 or 4 integer tuple, a hex string, a string representing the colour name or ``None``. :returns: a valid instance of :class:`wx.Colour` or ``None`` if the input `colour` was ``None`` in the first place. .. function:: LightColour(colour, percent) Brighten the input colour by a percentage. :param `colour`: a valid :class:`wx.Colour` instance; :param `percent`: the percentage by which the input colour should be brightened. .. function:: PaintStraightGradientBox(dc, rect, startColour, endColour, vertical=True) Draws a gradient coloured box from `startColour` to `endColour`. :param `dc`: an instance of :class:`wx.DC`; :param `rect`: the rectangle to fill with the gradient shading; :param `startColour`: the first colour in the gradient shading; :param `endColour`: the last colour in the gradient shading; :param `vertical`: ``True`` if the gradient shading is north to south, ``False`` if it is east to west. .. function:: RandomColour() Creates a random colour.