Reputation: 1405
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?
Upvotes: 0
Views: 994
Reputation: 33111
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()
Upvotes: 1