2011-09-02 20 views
3

我一直在使用python webkit和gtk模塊來將HTML/Javascript頁面轉換爲桌面應用程序。爲此,我創建了一個webkit窗口,除了webview外,幾乎沒有任何其他功能。在python wwebkit gtk程序中自定義上下文菜單

import webkit, gtk, subprocess 
w = gtk.Window(gtk.WINDOW_TOPLEVEL) 
w.set_resizable(False) 
w.set_size_request(900,600) 
w.connect("delete_event", gtk.main_quit) 
scroll_window=gtk.ScrolledWindow(None, None) 
web = webkit.WebView() 
web.open('/home/user/HTML/mypage.html') 
settings = web.get_settings() 
settings.set_property('enable-default-context-menu', True) 
scroll_window.add(web) 
w.add(scroll_window) 
w.show_all() 
gtk.main() 

這工作正常,除了上下文菜單。當我在頁面的大部分區域點擊右鍵時,上下文菜單給了我以下選項:後退,前進,停止,重新加載。

但是當我右鍵點擊一個鏈接,我得到:打開鏈接,在新窗口中打開鏈接,下載鏈接文件,複製鏈接位置。

我想自定義此所以,當我一個鏈接,我只得到右鍵點擊:打開鏈接

我GOOGLE了,看着就堆棧溢出的其他職位,但儘管我可以找到如何要禁用上下文菜單,我找不到如何自定義它們。

P.S.除非你說不出口,否則我對Python非常陌生,對於gtk和webkit模塊也很新穎。

回答

1

要自定義上下文菜單,首先需要添加相應的「上下文菜單」回調。該功能可以使用追加或刪除方法修改顯示的上下文菜單。你可以附加一個gtk.ImageMenuItem。這應該作爲一個例子:

def callback(webview, context_menu, hit_result_event, event): 
    option = gtk.ImageMenuItem('Do it') 
    option.connect('activate', option_activate_cb) 
    context_menu.append(option) 
    option.show() 

def option_activate_cb(image_menu_item): 
    print('It works.') 

web.connect('context-menu', callback) 

一個額外的說明:你不需要啓用上下文菜單。它是默認啓用的。