Skip to main content
 首页 » 编程设计

python之如何使用 python Gtk 和 webkit 在 webview 上叠加图像

2024年11月01日33lidabo

我需要有关如何在 WebView 上叠加图像的帮助。我希望能够在网页上放置一个按钮或图像(一个 webview 对象) 所以我有以下内容

import gtk 
import webkit 
... 
win=gtk.Window() 
page=webkit.Webview() 
page.open("http://www.google.com") 
image=gtk.Image() 
image.set_from_file("HappyFish.jpg") 
container=gtk.Fixed() 
win.add(container) 
container.add(page) 
container.add(image) 
win.show_all() 
gtk.main() 

一切正常,除了页面覆盖图像或按钮(即使我将按钮放在容器中页面之后),我需要它以便我可以将图像放在网页顶部......很多就像页面上的 Logo 一样。 我不想将页面转换为图像并将两个图像叠加在另一个之上,它需要保持交互。非常感谢有关此主题的任何帮助。

请您参考如下方法:

GTK+3 有一个 dedicated API为此:GtkOverlay(更具体地说:它是在 3.2 版中添加的)。

从您提供的代码来看,您似乎正在使用 PyGTK 和 GTK+2,因此可能值得考虑为该功能迁移到新版本的工具包。

gtk3-demo 应用程序提供了覆盖的良好演示。根据您的发行版,此应用程序包含在不同的包中(我不确定它是否在 OSX/Windows 上可用),因此您可能需要四处看看才能为它找到正确的包。

作为 PyGObject 和 GTK3 中的示例(注意:为适应 Webkit 和 GTK api 的更改而进行的一些更改):

from gi.repository import Gtk, WebKit 
... 
win = Gtk.Window() 
overlay = Gtk.Overlay() 
page = WebKit.WebView() 
page.load_uri("http://www.google.com") 
overlay.add(page) 
image = Gtk.Image() 
image.set_from_file("HappyFish.jpg") 
image.set_halign(Gtk.Align.START) 
image.set_valign(Gtk.Align.START) 
overlay.add_overlay(image) 
win.add(overlay) 
win.show_all() 
win.connect('destroy', Gtk.main_quit) 
Gtk.main()