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 wx.propgrid.PGMultiButton instance in 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

Inheritance diagram for class PGMultiButton:

method_summary Methods Summary

__init__

Constructor.

Add

Adds new button, with given label.

AddBitmapButton

A simple wrapper around the PGMultiButton.Add method, for backwards compatibility.

AddButton

A simple wrapper around the PGMultiButton.Add method, for backwards compatibility.

Finalize

Call this in CreateControls() of your custom editor class after all buttons have been added.

GetButton

Returns pointer to one of the buttons.

GetButtonId

Returns Id of one of the buttons.

GetClassDefaultAttributes

GetCount

Returns number of buttons.

GetPrimarySize

Returns size of primary editor control, as appropriately reduced by number of buttons present.


property_summary Properties Summary

Count

See GetCount

PrimarySize

See GetPrimarySize


api Class API

class wx.propgrid.PGMultiButton(Window)

Possible constructors:

PGMultiButton(pg, sz)

This class can be used to have multiple buttons in a property editor.


Methods

__init__(self, pg, sz)

Constructor.

Parameters:


Add(self, *args, **kw)

overload Overloaded Implementations:



Add (self, label, id=-2)

Adds new button, with given label.

Parameters:
  • label (string) –

  • id (int) –



Add (self, bitmap, id=-2)

Adds new bitmap button.

Parameters:





AddBitmapButton(self, bitmap, id=-2)

A simple wrapper around the PGMultiButton.Add method, for backwards compatibility.



AddButton(self, label, id=-2)

A simple wrapper around the PGMultiButton.Add method, for backwards compatibility.



Finalize(self, propGrid, pos)

Call this in CreateControls() of your custom editor class after all buttons have been added.

Parameters:


GetButton(self, i)

Returns pointer to one of the buttons.

Parameters:

i (int) –

Return type:

Window



GetButtonId(self, i)

Returns Id of one of the buttons.

This is utility function to be used in event handlers.

Parameters:

i (int) –

Return type:

int



static GetClassDefaultAttributes(variant=WINDOW_VARIANT_NORMAL)
Parameters:

variant (WindowVariant) –

Return type:

VisualAttributes



GetCount(self)

Returns number of buttons.

Return type:

int



GetPrimarySize(self)

Returns size of primary editor control, as appropriately reduced by number of buttons present.

Return type:

Size


Properties

Count

See GetCount



PrimarySize

See GetPrimarySize