Home | Trees | Index | Help |
|
---|
Package wx :: Package lib :: Module buttonpanel |
|
With ButtonPanel
class you have a panel with gradient coloring
on it and with the possibility to place some buttons on it. Using a
standard panel with normal wx.Buttons leads to an ugly result: the
buttons are placed correctly on the panel - but with grey area around
them. Gradient coloring is kept behind the images - this was achieved
due to the PNG format and the transparency of the bitmaps.
The image are functioning like a buttons and can be caught in your code using the usual self.Bind(wx.EVT_BUTTON, self.OnButton) method.
The control is generic, and support theming (well, I tested it under Windows with the three defauls themes: grey, blue, silver and the classic look).
ButtonPanel supports 4 alignments: left, right, top, bottom, which have a different meaning and behavior wrt wx.Toolbar. The easiest thing is to try the demo to understand, but I'll try to explain how it works.
CASE 1: ButtonPanel has a main caption text
Left alignment means ButtonPanel is horizontal, with the text aligned to the left. When you shrink the demo frame, if there is not enough room for all the controls to be shown, the controls closest to the text are hidden;
Right alignment means ButtonPanel is horizontal, with the text aligned to the right. Item layout as above;
Top alignment means ButtonPanel is vertical, with the text aligned to the top. Item layout as above;
Bottom alignment means ButtonPanel is vertical, with the text aligned to the bottom. Item layout as above.
CASE 2: ButtonPanel has no main caption text In this case, left and right alignment are the same (as top and bottom are the same), but the layout strategy changes: now if there is not enough room for all the controls to be shown, the last added items are hidden ("last" means on the far right for horizontal ButtonPanels and far bottom for vertical ButtonPanels).
The following example shows a simple implementation that uses ButtonPanel inside a very simple frame:
class MyFrame(wx.Frame): def __init__(self, parent, id=-1, title="ButtonPanel", pos=wx.DefaultPosition, size=(800, 600), style=wx.DEFAULT_FRAME_STYLE): wx.Frame.__init__(self, parent, id, title, pos, size, style) mainPanel = wx.Panel(self, -1) self.logtext = wx.TextCtrl(mainPanel, -1, "", style=wx.TE_MULTILINE) vSizer = wx.BoxSizer(wx.VERTICAL) mainPanel.SetSizer(vSizer) alignment = BP_ALIGN_RIGHT titleBar = ButtonPanel(mainPanel, -1, "A Simple Test & Demo") btn1 = ButtonInfo(wx.NewId(), wx.Bitmap("png4.png", wx.BITMAP_TYPE_PNG)) titleBar.AddButton(btn1) self.Bind(wx.EVT_BUTTON, self.OnButton, btn1) btn2 = ButtonInfo(wx.NewId(), wx.Bitmap("png3.png", wx.BITMAP_TYPE_PNG)) titleBar.AddButton(btn2) self.Bind(wx.EVT_BUTTON, self.OnButton, btn2) btn3 = ButtonInfo(wx.NewId(), wx.Bitmap("png2.png", wx.BITMAP_TYPE_PNG)) titleBar.AddButton(btn3) self.Bind(wx.EVT_BUTTON, self.OnButton, btn3) btn4 = ButtonInfo(wx.NewId(), wx.Bitmap("png1.png", wx.BITMAP_TYPE_PNG)) titleBar.AddButton(btn4) self.Bind(wx.EVT_BUTTON, self.OnButton, btn4) vSizer.Add(titleBar, 0, wx.EXPAND) vSizer.Add((20, 20)) vSizer.Add(self.logtext, 1, wx.EXPAND|wx.ALL, 5) vSizer.Layout() # our normal wxApp-derived class, as usual app = wx.PySimpleApp() frame = MyFrame(None) app.SetTopWindow(frame) frame.Show() app.MainLoop()
License And Version:
ButtonPanel Is Freeware And Distributed Under The wxPython License.
Latest Revision: Andrea Gavana @ 12 Oct 2006, 17.00 GMT Version 0.3.
Classes | |
---|---|
BoxSizer |
|
BPArt |
BPArt is an art provider class which does all of the drawing for ButtonPanel. |
ButtonInfo |
|
ButtonPanel |
|
ButtonPanelText |
|
Control |
|
Separator |
|
Sizer |
Sizer |
StatusBarTimer |
Timer used for deleting StatusBar long help after _DELAY seconds. |
Function Summary | |
---|---|
Bright the input colour by a factor. | |
Convert the given image (in place) to a grayed-out version, appropriate for a 'Disabled' appearance. | |
Make a pixel grayed-out. |
Variable Summary | |
---|---|
int |
BP_ALIGN_BOTTOM = 8 |
int |
BP_ALIGN_LEFT = 2 |
int |
BP_ALIGN_RIGHT = 1 |
int |
BP_ALIGN_TOP = 4 |
int |
BP_BACKGROUND_COLOR = 0 |
int |
BP_BORDER_COLOR = 3 |
int |
BP_BORDER_SIZE = 16 |
int |
BP_BUTTONTEXT_ALIGN_BOTTOM = 12 |
int |
BP_BUTTONTEXT_ALIGN_RIGHT = 13 |
int |
BP_BUTTONTEXT_COLOR = 5 |
int |
BP_BUTTONTEXT_FONT = 11 |
int |
BP_BUTTONTEXT_INACTIVE_COLOR = 6 |
int |
BP_DEFAULT_STYLE = 1 |
int |
BP_GRADIENT_COLOR_FROM = 1 |
int |
BP_GRADIENT_COLOR_TO = 2 |
int |
BP_GRADIENT_HORIZONTAL = 2 |
int |
BP_GRADIENT_NONE = 0 |
int |
BP_GRADIENT_VERTICAL = 1 |
int |
BP_HT_BUTTON = 200 |
int |
BP_HT_NONE = 201 |
int |
BP_MARGINS_SIZE = 15 |
int |
BP_PADDING_SIZE = 17 |
int |
BP_SELECTION_BRUSH_COLOR = 7 |
int |
BP_SELECTION_PEN_COLOR = 8 |
int |
BP_SEPARATOR_COLOR = 9 |
int |
BP_SEPARATOR_SIZE = 14 |
int |
BP_TEXT_COLOR = 4 |
int |
BP_TEXT_FONT = 10 |
int |
BP_USE_GRADIENT = 2 |
Function Details |
---|
BrightenColour(color, factor)Bright the input colour by a factor. |
GrayOut(anImage)Convert the given image (in place) to a grayed-out version, appropriate for a 'Disabled' appearance. |
MakeGray((r, g, b), factor, maskColor)Make a pixel grayed-out. If the pixel matches the maskColor, it won't be changed. |
Variable Details |
---|
BP_ALIGN_BOTTOM
|
BP_ALIGN_LEFT
|
BP_ALIGN_RIGHT
|
BP_ALIGN_TOP
|
BP_BACKGROUND_COLOR
|
BP_BORDER_COLOR
|
BP_BORDER_SIZE
|
BP_BUTTONTEXT_ALIGN_BOTTOM
|
BP_BUTTONTEXT_ALIGN_RIGHT
|
BP_BUTTONTEXT_COLOR
|
BP_BUTTONTEXT_FONT
|
BP_BUTTONTEXT_INACTIVE_COLOR
|
BP_DEFAULT_STYLE
|
BP_GRADIENT_COLOR_FROM
|
BP_GRADIENT_COLOR_TO
|
BP_GRADIENT_HORIZONTAL
|
BP_GRADIENT_NONE
|
BP_GRADIENT_VERTICAL
|
BP_HT_BUTTON
|
BP_HT_NONE
|
BP_MARGINS_SIZE
|
BP_PADDING_SIZE
|
BP_SELECTION_BRUSH_COLOR
|
BP_SELECTION_PEN_COLOR
|
BP_SEPARATOR_COLOR
|
BP_SEPARATOR_SIZE
|
BP_TEXT_COLOR
|
BP_TEXT_FONT
|
BP_USE_GRADIENT
|
Home | Trees | Index | Help |
|
---|
Generated by Epydoc 2.1.20050511.rpd on Thu Mar 22 12:07:08 2007 | http://epydoc.sf.net |