[wxpython-users] where we put the .png files?
Tim van der Leeuw
tnleeuw at gmail.com
Fri May 2 08:20:59 PDT 2008
os.argv[0] gives you the full absolute path to your application. So
you strip the filename off using functions from os.path module, and
load the pictures and other files from the application directory (or
subdirectory thereof). Works for me ;-)
--Tim
On 5/2/08, Mike Driscoll <mdriscoll at co.marshall.ia.us> wrote:
> Abdessamad EL GON-NOUNI wrote:
> >
> >
> > 2008/5/1 Mike Driscoll <mdriscoll at co.marshall.ia.us
> > <mailto:mdriscoll at co.marshall.ia.us>>:
> >
> > Abdessamad EL GON-NOUNI wrote:
> >
> > It dosn't work, he gives me the msg "Can'l load image from
> > file 'Exit.png':files does not exist"
> >
> >
> > Make sure the path to your png is correct. Also, check out
> > wx.ArtProvider for standard icons. I use img2py if I need custom
> > icons because it's easier to embed them in my application.
> >
> > where do I can check this path?
> >
> >
> >
> > I have another problem: when I want to bind an element from
> > the menubar to an event, the program doesn't recognize the
> > method, I have this error msg: 'MainWindow' object has no
> > attribute 'OnExit'
> >
> >
> > Are you talking about a menu event or a toolbar event?
> >
> > Both menu and toolbar
> >
> >
> > Here's a generic way to create code for a toolbar (I created a ):
> >
> > <code>
> >
> > def createToolbar(self):
> > toolbar = self.CreateToolBar(wx.TB_3DBUTTONS|wx.TB_TEXT)
> > self.toolbar.SetToolBitmapSize((16,16))
> > print_ico = wx.ArtProvider.GetBitmap(wx.ART_PRINT,
> > wx.ART_TOOLBAR, (16,16))
> > printTool = self.toolbar.AddSimpleTool(wx.ID_ANY, print_ico,
> > 'Print', 'Sends Timesheet to Default Printer')
> > self.Bind(wx.EVT_MENU, self.OnPrint, sendTool)
> > toolbar.Realize()
> >
> > </code>
> >
> > And here's how I do menubar code for the same function as above:
> >
> > <code>
> >
> > menubar = wx.MenuBar()
> > fileMenu = wx.Menu()
> > printDefault_menu_item = fileMenu.Append(wx.ID_ANY,
> > '&Print\tCtrl+P', 'Prints to Default Printer')
> > self.Bind(wx.EVT_MENU, self.onPrintDefault, printDefault_menu_item)
> > menubar.Append(fileMenu, '&File')
> > self.SetMenuBar(menubar)
> >
> > </code>
> >
> > this is my code:
> > <code>
> > import wx
> > ID_OPEN=001
> > ID_ABOUT=101
> > ID_EXIT=110
> >
> > class MainWindow(wx.Frame):
> > def __init__(self, title):
> > wx.Frame.__init__(self, None, -1, title)
> > #self.CreateStatusBar() # A Statusbar in the bottom of the window
> > # Setting up the menu.
> > menubar = wx.MenuBar(wx.MB_DOCKABLE)
> > file = wx.Menu()
> > edit = wx.Menu()
> > help = wx.Menu()
> >
> > file.Append(-1,'&New')
> > file.Append(-1, "&Open")
> > file.Append(-1, "&Save")
> > file.AppendSeparator()
> > file.Append(ID_EXIT,"E&xit"," Terminate the program")
> >
> > edit.Append(-1, '&Preferences')
> > edit.Append(-1, 'Sea&rch')
> >
> > menubar.Append(file, '&File')
> > menubar.Append(edit, '&Edit')
> > menubar.Append(help, '&Help')
> > self.SetMenuBar(menubar)
> >
> > #Tool Bar
> > toolbar = wx.ToolBar(self,-1,style = wx.TB_HORIZONTAL |
> > wx.NO_BORDER)
> The wx.Bitmap code below is looking in the directory from which your
> script is running for the png files. If you're not storing those pngs in
> that directory, then it fails. Let's pretend that you have them stored
> at C:\MyPngs. Then to specify this, you would do this instead:
>
> toolbar.AddSimpleTool(wx.ID_OPEN,wx.Bitmap("C:\\MyPngs\\Open.png",
> wx.BITMAP_TYPE_PNG),shortHelpString = "Ouvrir",longHelpString = "Ouvrir
> une confiiguration")
>
> > toolbar.AddSimpleTool(wx.ID_OPEN,wx.Bitmap("Open.png",
> > wx.BITMAP_TYPE_PNG),shortHelpString = "Ouvrir",longHelpString =
> > "Ouvrir une confiiguration")
> > toolbar.AddSimpleTool (wx.ID_CLOSE,wx.Bitmap("Exit.png",
> > wx.BITMAP_TYPE_PNG),shortHelpString = "Fermer",longHelpString =
> > "Fermer le fichier ouvert")
> > toolbar.AddSeparator()
> > toolbar.Realize()
> > self.SetToolBar(toolbar)
> >
> <snip>
>
> You can also it using the ArtProvider, like so:
>
> open_ico = wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_TOOLBAR,
> (16,16))
> toolbar.AddSimpleTool(wx.ID_OPEN,open_ico,shortHelpString =
> "Ouvrir",longHelpString = "Ouvrir une confiiguration")
>
> Finally, here's how to use img2py:
>
> 1) Navigate to your wxPython tools directory. Mine is located at:
> C:\Python25\Lib\site-packages\wx-2.8-msw-unicode\wx\tools
> 2) Copy your png files there (If you're using a command line to do the
> first 2 steps, then skip to step #5)
> 3) Open a command window (in Windows, go to Start-Run, and type cmd)
> 4) Change the directory to the one in step 1
> 5) Run the following command, changing the icon file name and the output
> filename as needed:
> python img2py.py -i myIcon.ico icon.py
> 6) Copy your newly created Python files to the location where your
> script is and import it in your main script. Then you can use the
> getIcon() method.
>
> I actually blogged about this here: http://www.blog.pythonlibrary.org/?p=13
>
> See also http://wiki.wxpython.org/WorkingWithToolBars
>
> Mike
>
>
> _______________________________________________
> wxpython-users mailing list
> wxpython-users at lists.wxwidgets.org
> http://lists.wxwidgets.org/mailman/listinfo/wxpython-users
>
More information about the wxpython-users
mailing list