.. 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 .. _wx.propgrid.PGMultiButton: ========================================================================================================================================== |phoenix_title| **wx.propgrid.PGMultiButton** ========================================================================================================================================== This class can be used to have multiple buttons in a property editor. You will need to create a new property editor class, override CreateControls, and have it return :ref:`wx.propgrid.PGMultiButton` instance in :meth:`wx.propgrid.PGWindowList.SetSecondary` . For instance, here we add three buttons to a TextCtrl editor: :: class SampleMultiButtonEditor(wx.propgrid.PGTextCtrlEditor): def GetName(self): return "SampleMultiButtonEditor" def CreateControls(self, propGrid, aProperty, pos, size): # Create and populate buttons-subwindow buttons = wx.propgrid.PGMultiButton(propGrid, size) # Add two regular buttons buttons.Add("...") buttons.Add("A") # Add a bitmap button buttons.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER)) # Create the 'primary' editor control (textctrl in self case) wndList = wx.propgrid.PGTextCtrlEditor.CreateControls( propGrid, aProperty, pos, buttons.GetPrimarySize()) # Finally, move buttons-subwindow to correct position and make sure # returned wx.propgrid.PGWindowList contains our custom button list. buttons.Finalize(propGrid, pos) wndList.SetSecondary(buttons) return wndList def OnEvent(self, propGrid, aProperty, ctrl, event): if event.GetEventType() == wx.wxEVT_BUTTON: buttons = propGrid.GetEditorControlSecondary() if event.GetId() == buttons.GetButtonId(0): # Do something when the first button is pressed # Return true if the action modified the value in editor. ... if event.GetId() == buttons.GetButtonId(1): # Do something when the second button is pressed ... if event.GetId() == buttons.GetButtonId(2): # Do something when the third button is pressed ... return wx.propgrid.PGTextCtrlEditor.OnEvent(propGrid, aProperty, ctrl, event) Further to use this editor, code like this can be used: :: # Register editor class - needs only to be called once multiButtonEditor = SampleMultiButtonEditor() wx.propgrid.PropertyGrid.RegisterEditorClass(multiButtonEditor) # Insert the property that will have multiple buttons propGrid.Append( wx.propgrid.LongStringProperty("MultipleButtons", wx.propgrid.PG_LABEL)) # Change property to use editor created in the previous code segment propGrid.SetPropertyEditor("MultipleButtons", multiButtonEditor) | |class_hierarchy| Class Hierarchy ================================= .. raw:: html <div id="toggleBlock" onclick="return toggleVisibility(this)" class="closed" style="cursor:pointer;"> <img id="toggleBlock-trigger" src="_static/images/closed.png"/> Inheritance diagram for class <strong>PGMultiButton</strong>: </div> <div id="toggleBlock-summary" style="display:block;"></div> <div id="toggleBlock-content" style="display:none;"> <p class="graphviz"> <center><img src="_static/images/inheritance/wx.propgrid.PGMultiButton_inheritance.svg" alt="Inheritance diagram of PGMultiButton" usemap="#dummy" class="inheritance"/></center> <script type="text/javascript">toggleVisibilityOnLoad(document.getElementById('toggleBlock'))</script> <map id="dummy" name="dummy"> <area shape="rect" id="node1" href="wx.propgrid.PGMultiButton.html" title="This class can be used to have multiple buttons in a property editor." alt="" coords="12,236,231,265"/> <area shape="rect" id="node2" href="wx.Window.html" title="wx.Window is the base class for all windows and represents any visible object on screen." alt="" coords="66,159,177,188"/> <area shape="rect" id="node3" href="wx.EvtHandler.html" title="A class that can handle events from the windowing system." alt="" coords="55,82,188,111"/> <area shape="rect" id="node4" href="wx.Object.html" title="This is the root class of many of the wxWidgets classes." alt="" coords="5,5,104,34"/> <area shape="rect" id="node5" href="wx.Trackable.html" title="Add-on base class for a trackable object." alt="" coords="128,5,251,34"/> </map> </p> </div> | |method_summary| Methods Summary ================================ ================================================================================ ================================================================================ :meth:`~wx.propgrid.PGMultiButton.__init__` Constructor. :meth:`~wx.propgrid.PGMultiButton.Add` Adds new button, with given label. :meth:`~wx.propgrid.PGMultiButton.AddBitmapButton` A simple wrapper around the PGMultiButton.Add method, for backwards compatibility. :meth:`~wx.propgrid.PGMultiButton.AddButton` A simple wrapper around the PGMultiButton.Add method, for backwards compatibility. :meth:`~wx.propgrid.PGMultiButton.Finalize` Call this in CreateControls() of your custom editor class after all buttons have been added. :meth:`~wx.propgrid.PGMultiButton.GetButton` Returns pointer to one of the buttons. :meth:`~wx.propgrid.PGMultiButton.GetButtonId` Returns Id of one of the buttons. :meth:`~wx.propgrid.PGMultiButton.GetClassDefaultAttributes` :meth:`~wx.propgrid.PGMultiButton.GetCount` Returns number of buttons. :meth:`~wx.propgrid.PGMultiButton.GetPrimarySize` Returns size of primary editor control, as appropriately reduced by number of buttons present. ================================================================================ ================================================================================ | |property_summary| Properties Summary ===================================== ================================================================================ ================================================================================ :attr:`~wx.propgrid.PGMultiButton.Count` See :meth:`~wx.propgrid.PGMultiButton.GetCount` :attr:`~wx.propgrid.PGMultiButton.PrimarySize` See :meth:`~wx.propgrid.PGMultiButton.GetPrimarySize` ================================================================================ ================================================================================ | |api| Class API =============== .. class:: wx.propgrid.PGMultiButton(Window) **Possible constructors**:: PGMultiButton(pg : PropertyGrid, sz : Size) -> None This class can be used to have multiple buttons in a property editor. .. method:: __init__(self, pg : PropertyGrid, sz : Size) Constructor. :param `pg`: :type `pg`: wx.propgrid.PropertyGrid :param `sz`: :type `sz`: wx.Size :rtype: `None` .. method:: Add(self, *args, **kw) |overload| **Overloaded Implementations:** :html:`<hr class="overloadsep" /><br />` **Add** `(self, label : str, id: int=-2)` Adds new button, with given label. :param `label`: :type `label`: string :param `id`: :type `id`: int :rtype: `None` :html:`<hr class="overloadsep" /><br />` **Add** `(self, bitmap : BitmapBundle, id: int=-2)` Adds new bitmap button. :param `bitmap`: :type `bitmap`: wx.BitmapBundle :param `id`: :type `id`: int :rtype: `None` :html:`<hr class="overloadsep" /><br />` .. method:: AddBitmapButton(self, bitmap, id=-2) A simple wrapper around the PGMultiButton.Add method, for backwards compatibility. .. method:: AddButton(self, label, id=-2) A simple wrapper around the PGMultiButton.Add method, for backwards compatibility. .. method:: Finalize(self, propGrid : PropertyGrid, pos : Point) Call this in CreateControls() of your custom editor class after all buttons have been added. :param `propGrid`: :ref:`wx.propgrid.PropertyGrid` given in CreateControls(). :type `propGrid`: wx.propgrid.PropertyGrid :param `pos`: :ref:`wx.Point` given in CreateControls(). :type `pos`: wx.Point :rtype: `None` .. method:: GetButton(self, i : int) Returns pointer to one of the buttons. :param `i`: :type `i`: int :rtype: `Window` .. method:: GetButtonId(self, i : int) Returns Id of one of the buttons. This is utility function to be used in event handlers. :param `i`: :type `i`: int :rtype: `int` .. staticmethod:: GetClassDefaultAttributes(variant: WindowVariant=WINDOW_VARIANT_NORMAL) :param `variant`: :type `variant`: wx.WindowVariant :rtype: `VisualAttributes` .. method:: GetCount(self) Returns number of buttons. :rtype: `int` .. method:: GetPrimarySize(self) Returns size of primary editor control, as appropriately reduced by number of buttons present. :rtype: `Size` .. attribute:: Count See :meth:`~wx.propgrid.PGMultiButton.GetCount` .. attribute:: PrimarySize See :meth:`~wx.propgrid.PGMultiButton.GetPrimarySize`