wxPython question

J

Jive

How the heck do you set the icon on a frame using a .ico file, or a .bmp
file, or whatever? How do you find out how to do something like that?
Apparently there is no documentation to speak of. I tried looking the in
the demo program, but I didn't find the secret..
 
M

mefjr75

Jive said:
How the heck do you set the icon on a frame using a .ico file, or a ..bmp
file, or whatever? How do you find out how to do something like that?
Apparently there is no documentation to speak of. I tried looking the in
the demo program, but I didn't find the secret..
Hello Jive,
# this is a bit old but should still work
# might have to tweak the wx stuff
# because of the namespace change. ex. wxImage -> wx.Image
# image size must be 32h 32w
image = wxImage(file, wxBITMAP_TYPE_JPEG)
image = image.ConvertToBitmap()

icon = wxEmptyIcon()
icon.CopyFromBitmap(image)

frame.SetIcon(icon)

Be sure to look thru the demo it is very informative and is really the
best documention.
As they say use the source Luke.
Hth,
M.E.Farmer
 
M

M.E.Farmer

Messed up it does need the dots.
This should handle bmp ico png gif and several other formats.
Still need to be 32 by 32

wx.InitAllImageHandlers()
image = wx.Image(file, wx.BITMAP_TYPE_ANY)
image = image.ConvertToBitmap()

icon = wxEmptyIcon()
icon.CopyFromBitmap(image)

frame.SetIcon(icon)

Hth,
M.E.Farmer
 
?

=?iso-8859-1?B?QW5kcuk=?=

M.E.Farmer said:
Messed up it does need the dots.
This should handle bmp ico png gif and several other formats.
Still need to be 32 by 32

wx.InitAllImageHandlers()
image = wx.Image(file, wx.BITMAP_TYPE_ANY)
image = image.ConvertToBitmap()

icon = wxEmptyIcon()
icon.CopyFromBitmap(image)

frame.SetIcon(icon)

Hth,
M.E.Farmer

I needed to scale the image down to 16 by 16 on my Windows computer to
make it work.
hth,
André
 
M

M.E.Farmer

André said:
I needed to scale the image down to 16 by 16 on my Windows computer to
make it work.

Hello André,

# I actually ran this code ;)
import wx
app = wx.PySimpleApp()
class myframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,"Icon Frame",
size=(100,100),pos=(-1,-1))
frame = myframe()
wx.InitAllImageHandlers()
# this image is 32*32 on my computer
image = wx.Image('c:/Python22/pycon.ico', wx.BITMAP_TYPE_ANY)
image = image.ConvertToBitmap()

icon = wx.EmptyIcon()
icon.CopyFromBitmap(image)

frame.SetIcon(icon)

frame.Show()
app.MainLoop()

This works fine for me I am on windows 2000, and pycon.py is 32*32*24
Wonder why you had to resize?

On another note, be sure to check out the tools dir in either the
wxpython dir or wx dir it has a script called img2py.py.

img2py.py -- Convert an image to PNG format and embed it in a Python
module with appropriate code so it can be loaded into
a program at runtime. The benefit is that since it is
Python source code it can be delivered as a .pyc or
'compiled' into the program using freeze, py2exe, etc.

Be sure to use the -i flag so it will convert it to a wxIcon
Once you convert your icon to source using img2py.py you can do this:
import Icon
ICON = Icon.getIcon()
frame.SetIcon(ICON)

Hth,
M.E.Farmer
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top