在Python Webkit GTK程序中自定义上下文菜单
我一直在用Python的webkit和gtk模块,把一个HTML/JavaScript页面变成桌面应用程序。为此,我创建了一个几乎没有其他功能的webkit窗口,只有网页视图。
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()
这个功能运行得还不错,除了右键菜单的问题。当我在页面的大部分区域右键点击时,右键菜单会给我以下选项:后退、前进、停止、重新加载。
但是当我在一个链接上右键点击时,菜单会显示:打开链接、在新窗口中打开链接、下载链接文件、复制链接地址。
我想自定义这个菜单,让我在右键点击链接时只显示:打开链接。
我在网上查过,也看了其他人在Stack Overflow上的帖子,虽然我能找到怎么禁用右键菜单的方法,但我找不到怎么自定义它们的方法。
顺便说一下,如果你看不出来的话,我对Python还很陌生,对gtk和webkit模块更是新手。
1 个回答
1
要自定义右键菜单,首先你需要添加一个叫做'context-menu'的回调函数。这个函数可以用来修改显示的右键菜单,你可以通过添加或删除菜单项来实现。你可以添加一个gtk.ImageMenuItem。这段代码可以作为一个示例:
def callback(webview, context_menu, event, hit_result_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)
还有一点需要注意:你不需要手动开启右键菜单,它默认就是开启的。