2014-09-29 65 views
0

我有使用wx.StaticBitmap的應用程序中的圖像,但我需要將圖像添加到圖像,當你點擊圖像時,它應該使用系統的默認瀏覽器打開該網址。如何放置這樣的圖像?wxPython圖像與URL

回答

1

您需要將wx.StaticBitmap的實例綁定到wx.EVT_LEFT_DOWN,並使用Python的webbrowser模塊打開url。您可以創建一個圖像字典,其中每個圖像映射到一個URL。然後,在加載圖像時,將變量設置爲該圖像的路徑,並將其用作字典中的鍵,以在單擊圖像時加載URL。

這裏有一個非常簡單的例子:

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()