.. 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
Inheritance diagram for class
PGMultiButton:
|
|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, sz)
This class can be used to have multiple buttons in a property editor.
.. method:: __init__(self, pg, sz)
Constructor.
:param `pg`:
:type `pg`: wx.propgrid.PropertyGrid
:param `sz`:
:type `sz`: wx.Size
.. method:: Add(self, *args, **kw)
|overload| Overloaded Implementations:
:html:`
`
**Add** `(self, label, id=-2)`
Adds new button, with given label.
:param `label`:
:type `label`: string
:param `id`:
:type `id`: int
:html:`
`
**Add** `(self, bitmap, id=-2)`
Adds new bitmap button.
:param `bitmap`:
:type `bitmap`: wx.BitmapBundle
:param `id`:
:type `id`: int
:html:`
`
.. 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, pos)
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
.. method:: GetButton(self, i)
Returns pointer to one of the buttons.
:param `i`:
:type `i`: int
:rtype: `Window`
.. method:: GetButtonId(self, i)
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=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`