在 python wwebkit gtk 程序中自定义上下文菜单

发布于 2024-12-02 11:58:57 字数 848 浏览 1 评论 0原文

我一直致力于使用 python webkit 和 gtk 模块将 HTML / Javascript 页面转换为桌面应用程序。为此,我创建了一个 webkit 窗口,除了 webview 之外几乎没有任何功能。

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

除了上下文菜单之外,这工作得很好。当我右键单击页面的大部分区域时,上下文菜单会提供以下选项:后退、前进、停止、重新加载。

但是,当我右键单击链接时,我得到:打开链接、在新窗口中打开链接、下载链接文件、复制链接位置。

我想自定义这个,这样当我右键单击链接时,我只得到: 打开链接

我已经用谷歌搜索并查看了有关堆栈溢出的其他帖子,但是尽管我可以找到如何禁用上下文菜单,但我不能了解如何定制它们。

PS 除非你不知道,否则我对 python 很陌生,对 gtk 和 webkit 模块也很陌生。

I've been on working on using the python webkit and gtk modules to turn a HTML / Javascript page into a desktop application. To do this, I've created a webkit window with hardly any features other than the webview.

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

This works fine, apart from the context menus. When I click right on most areas of the page, the context menu gives me the following options: back, forward, stop, reload.

But when I right-click on a link, I get: open link, open link in new window, download linked file, copy link location.

I would like to customize this so that when I right-click on a link I get only: open link

I've googled and looked at other posts on stack overflow, but although I can find out how to disable the context menus, I cannot find out how to customize them.

P.S. Unless you can't tell, I'm quite new to python and very new to gtk and webkit modules.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小情绪 2024-12-09 11:58:57

要自定义上下文菜单,您首先需要添加相应的“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)

一个附加说明:您不需要启用上下文菜单。默认情况下它是启用的。

For customizing the context menu, you first need to add the corresponding 'context-menu' callback. This function can modify the displayed context menu using append or remove methods. You can append a gtk.ImageMenuItem. This should work as an example:

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)

One additional note: You do not need to enable the context menu. It is enabled by default.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文