Hey all, had another question that came up in my first Python program. The program is pretty much just a GUI for an application launcher. My current version has rollover buttons and successfully launches the applications, but is bloated and needs some revision so I'll post the first version with the problem.

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:
            
            # Load image into variables
            image_file = 'Background.jpg'
            bmp1 = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
                    
            # Place the bitmap (background)
            self.bitmap1 = wx.StaticBitmap(self, -1, bmp1, (0, 0))

        # Close program if image is missing    
        except IOError:
            print "Image file %s not found" % imageFile
            raise SystemExit

        # Create BMP Button 
        imageFile1 = "Normal01.jpg"
        image1 = wx.Image(imageFile1, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        self.button1 = wx.BitmapButton(self.bitmap1, id=-1,
            bitmap = image1,
                pos=(74, 75), size = (102, 55))

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, "Launch a program", size=(600, 234))

# Create the class instance
panel1 = Panel1(frame1, -1)
frame1.Show(True)
app.MainLoop()

My problem is that the buttons flicker occasionally on mouseover. I read something about this occurring when the back panel is painted with a painted button over it, but the post was either too advanced for me or unrelated and I couldn't find the solution. My question is how do I fix this flicker?

I'll attach the two images needed to crate the program if anyone wants to test it out and see it for themselves. The launcherpiczg8 is a screen shot of the nearly done version with rollover. When I get some more free time again I'll probably rewrite it with what I've learned on the way and make the last version postable (currently bloated and inefficient).

And another thing, how would I remove the outside frame? I saw advice from vegaseat on how to do it, but I couldn't get it to work. What would I have to do to my code to remove the frame?

Attachments Background.jpg 4.28 KB launcherpiczg8.png 32.3 KB Normal01.jpg 4.38 KB

To avoid the flicker, use .bmp file for your button image to reduce the palette problem (.jpg files bring in too many colors).

Hmm tried what you suggested, but anything from 24bit down to monochrome bmps have the same problem. Is there something wrong with how I coded it possibly?

Sorry, the wxPython demo manual suggested to keep button images to 16 colours. I did that and it seemed to be working better, but there is still some flicker. I wonder, if one has to mask the image.

Hmm alright, suppose I'll just leave it for another day when I understand wxPython better.

This article has been dead for over six months. Start a new discussion instead.