[python-win32] createtoolbar

Mike Driscoll mdriscoll at co.marshall.ia.us
Thu Feb 28 15:28:09 CET 2008


Hi, 

> 
> Message: 1
> Date: Thu, 28 Feb 2008 14:34:12 +0530
> From: kNish <singhai.nish at gmail.com>
> Subject: [python-win32] createtoolbar
> To: python-win32 at python.org
> Message-ID:
> 	<81bfef2e0802280104o357a0306h7f5ff00f8d445fbf at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
> 
> Hi,
> 
>         #!/usr/bin/python
> 
> # panels.py
> 
> import wx
> 
> 
> class Panels(wx.Frame):
>    def __init__(self, parent, id, title):
>        wx.Frame.__init__(self, parent, id, title)
> 
>        hbox = wx.BoxSizer(wx.HORIZONTAL)
>        splitter = wx.SplitterWindow(self, -1)
> 
>        vbox1 = wx.BoxSizer(wx.VERTICAL)
>        panel1 = wx.Panel(splitter, -1)
>        panel11 = wx.Panel(panel1, -1, size=(-1, 40))
>        panel11.SetBackgroundColour('#53728c')
>        st1 = wx.StaticText(panel11, -1, 'Feeds', (5, 5))
>        st1.SetForegroundColour('WHITE')
> 
>        panel12 = wx.Panel(panel1, -1, style=wx.BORDER_SUNKEN)
>        panel12.SetBackgroundColour('WHITE')
> 
>        vbox1.Add(panel11, 0, wx.EXPAND)
>        vbox1.Add(panel12, 1, wx.EXPAND)
> 
>        panel1.SetSizer(vbox1)
> 
>        vbox2 = wx.BoxSizer(wx.VERTICAL)
>        panel2 = wx.Panel(splitter, -1)
>        panel21 = wx.Panel(panel2, -1, size=(-1, 40), 
> style=wx.NO_BORDER)
>        st2 = wx.StaticText(panel21, -1, 'Articles', (5, 5))
>        st2.SetForegroundColour('WHITE')
> 
>        panel21.SetBackgroundColour('#53728c')
>        panel22 = wx.Panel(panel2, -1, style=wx.BORDER_RAISED)
> 
>        panel22.SetBackgroundColour('WHITE')
>        vbox2.Add(panel21, 0, wx.EXPAND)
>        vbox2.Add(panel22, 1, wx.EXPAND)
> 
>        panel2.SetSizer(vbox2)
> 
>        toolbar = self.CreateToolBar(self)
>        toolbar.AddLabelTool(1, 'Exit', 
> wx.Bitmap('icons/stock_exit.png'))
>        toolbar.Realize()
>        self.Bind(wx.EVT_TOOL, self.ExitApp, id=1)
> 
>        hbox.Add(splitter, 1, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
>        self.SetSizer(hbox)
>        self.CreateStatusBar()
>        splitter.SplitVertically(panel1, panel2)
>        self.Centre()
>        self.Show(True)
> 
> 
>    def ExitApp(self, event):
>        self.Close()
> 
> 
> app = wx.App()
> Panels(None, -1, 'Panels')
> app.MainLoop()
> 
> 
> createToolbar gives an error. (Look at the Attachment). How 
> may I get this to work successfully.
> 
> BRgds,
> 
> kNish

First of all, this is a wxPython question, NOT a PyWin32 question. You
should be posting there: http://wxpython.org/maillist.php

Secondly, you sent code that does not work. You need to change line 41
from

toolbar = self.CreateToolBar(self)

to

toolbar = self.CreateToolBar()

And if you use images in your code, you need to provide them. I added the
following line right after the one above:

ico = wx.ArtProvider.GetBitmap(wx.ART_QUIT, wx.ART_TOOLBAR, (16,16))

and then changed 

toolbar.AddLabelTool(1, 'Exit', wx.Bitmap('icons/stock_exit.png'))

to

toolbar.AddLabelTool(1, 'Exit', ico)

See http://www.wxpython.org/docs/api/wx.ArtProvider-class.html for more
information on generic icons for wxPython.

So the full code with changes if below:

<code>

import wx


class Panels(wx.Frame):
   def __init__(self, parent, id, title):
       wx.Frame.__init__(self, parent, id, title)

       hbox = wx.BoxSizer(wx.HORIZONTAL)
       splitter = wx.SplitterWindow(self, -1)

       vbox1 = wx.BoxSizer(wx.VERTICAL)
       panel1 = wx.Panel(splitter, -1)
       panel11 = wx.Panel(panel1, -1, size=(-1, 40))
       panel11.SetBackgroundColour('#53728c')
       st1 = wx.StaticText(panel11, -1, 'Feeds', (5, 5))
       st1.SetForegroundColour('WHITE')

       panel12 = wx.Panel(panel1, -1, style=wx.BORDER_SUNKEN)
       panel12.SetBackgroundColour('WHITE')

       vbox1.Add(panel11, 0, wx.EXPAND)
       vbox1.Add(panel12, 1, wx.EXPAND)

       panel1.SetSizer(vbox1)

       vbox2 = wx.BoxSizer(wx.VERTICAL)
       panel2 = wx.Panel(splitter, -1)
       panel21 = wx.Panel(panel2, -1, size=(-1, 40), style=wx.NO_BORDER)
       st2 = wx.StaticText(panel21, -1, 'Articles', (5, 5))
       st2.SetForegroundColour('WHITE')

       panel21.SetBackgroundColour('#53728c')
       panel22 = wx.Panel(panel2, -1, style=wx.BORDER_RAISED)

       panel22.SetBackgroundColour('WHITE')
       vbox2.Add(panel21, 0, wx.EXPAND)
       vbox2.Add(panel22, 1, wx.EXPAND)

       panel2.SetSizer(vbox2)

       toolbar = self.CreateToolBar()
       ico = wx.ArtProvider.GetBitmap(wx.ART_QUIT, wx.ART_TOOLBAR,
(16,16))
       toolbar.AddLabelTool(1, 'Exit', ico)
       toolbar.Realize()
       self.Bind(wx.EVT_TOOL, self.ExitApp, id=1)

       hbox.Add(splitter, 1, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
       self.SetSizer(hbox)
       self.CreateStatusBar()
       splitter.SplitVertically(panel1, panel2)
       self.Centre()
       self.Show(True)


   def ExitApp(self, event):
       self.Close()


app = wx.App(0)
Panels(None, -1, 'Panels')
app.MainLoop()

</code>

In the future, be sure to post to the wxPython group if you have a
question about that GUI toolkit. If you need help with Mark Hammond's
win32 modules, drop us a line.

Mike


More information about the python-win32 mailing list