Search code examples
wxpython

how to put a image as a background in wxpython


How to add background image to panel1? Which command is there?

Code:

import wx
import wx
appy=wx.App()

class cg(wx.Frame) :
     def __init__(self,parent,id) :
         wx.Frame.__init__(self,parent,id,'GPA',pos=(1000,600),size=(600,400))
         #splitter = wx.SplitterWindow(self, -1)
         panel1 = wx.Panel(self)
         panel2 = wx.Panel(panel1, -1,size=(600,200),style=wx.BORDER_SUNKEN)
         panel3 = wx.Panel(panel1, -1,pos=(0,200),size=(600,200),style=wx.BORDER_SUNKEN)
         #panel3=wx.panel(panel1,-1,pos=(300,200),size=(600,200),style=wx.BORDER_SUNKEN)
         #panel13 = wx.Panel(panel1, -1, style=wx.BORDER_SUNKEN)
         #panel13 = wx.Panel(panel1, -1, style=wx.BORDER_SUNKEN)
         #panel13 = wx.Panel(panel1, -1, style=wx.BORDER_SUNKEN)

         #button1=wx.Button(panel1,label='exit',pos=(10,10),size=(10,10))
         #self.cnt1=wx.TextCtrl(panel1,pos=(40,60),size=(120,30))

if __name__=='__main__' :

     app=wx.PySimpleApp()
     frame=cg(parent=None,id=-1)
     frame.Show()
     app.MainLoop()

Solution

  • A simple search would have brought you to this answer from The Mouse vs. The Python.

    # create a background image on a wxPython panel
    # and show a button on top of the image
    
    import wx
    
    class Panel1(wx.Panel):
        """class Panel1 creates a panel with an image on it, inherits wx.Panel"""
        def __init__(self, parent, id):
            # create the panel
            wx.Panel.__init__(self, parent, id)
            try:
                # pick an image file you have in the working folder
                # you can load .jpg  .png  .bmp  or .gif files
                image_file = 'roses.jpg'
                bmp1 = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
                # image's upper left corner anchors at panel coordinates (0, 0)
                self.bitmap1 = wx.StaticBitmap(self, -1, bmp1, (0, 0))
                # show some image details
                str1 = "%s  %dx%d" % (image_file, bmp1.GetWidth(), bmp1.GetHeight()) 
                parent.SetTitle(str1)
            except IOError:
                print "Image file %s not found" % imageFile
                raise SystemExit
    
            # button goes on the image --> self.bitmap1 is the parent
            self.button1 = wx.Button(self.bitmap1, id=-1, label='Button1', pos=(8, 8))
    
    app = wx.PySimpleApp()
    # create a window/frame, no parent, -1 is default ID
    # change the size of the frame to fit the backgound images
    frame1 = wx.Frame(None, -1, "An image on a panel", size=(350, 400))
    # create the class instance
    panel1 = Panel1(frame1, -1)
    frame1.Show(True)
    app.MainLoop()