0

I have image in app using wx.StaticBitmap, but I need to add url to image, when you click image it should open that url using default browser of system. How to place such image?

1 Answer 1

1

You will need to bind your instance of wx.StaticBitmap to wx.EVT_LEFT_DOWN and use Python's webbrowser module to open the url. You could create a dictionary of images where each image maps to a URL. Then when you load an image, you set a variable to that image's path and use that as your key in the dictionary to load the URL when the image is clicked.

Here's a fairly simple example:

import webbrowser
import wx

########################################################################
class ImgPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)

        self.my_images = {"/path/to/image.jpg":"www.example.com"}
        self.loaded = "/path/to/image.jpg"

        img = wx.Image(self.loaded, wx.BITMAP_TYPE_ANY)

        self.image_ctrl = wx.StaticBitmap(self, bitmap=wx.BitmapFromImage(img))
        self.image_ctrl.Bind(wx.EVT_LEFT_DOWN, self.onClick)

    #----------------------------------------------------------------------
    def onClick(self, event):
        """"""
        webbrowser.open(self.my_images[self.loaded])

########################################################################
class MainFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="Images")
        panel = ImgPanel(self)
        self.Show()

if __name__ == "__main__":
    app = wx.App(False)
    frame = MainFrame()
    app.MainLoop()
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.