.. 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`