我需要有关如何在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()
一切正常,除了页面覆盖图像或按钮(即使我将按钮放在容器中的页面之后),我需要它,以便我可以将图像放在网页的顶部...就像页面上的标志一样。 我不想将页面转换为图像并将两个图像叠加在另一个上面,它需要保持交互。我很感激这方面的任何帮助。
答案 0 :(得分:2)
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()
答案 1 :(得分:0)
怀疑这个操作仍然有任何用处,所以我将把它留给碰巧被GTK所困扰且没有叠加功能的人
self.your_image = gtk.Image()
#this image will be the top layer
self.image_to_overlay = GdkPixbuf.Pixbuf.new_from_file("try_some_image_file")
#this image will be the bottom image
self.bottom_image = GdkPixbuf.Pixbuf.new_from_file("some_base_image")
self.image_to_overlay.composite(self.bottom_image,
0,0,
self.bottom_image.props.width,self.bottom_image.props.height,
0,0,
1,1,
GdkPixbuf.InterpType.BILINEAR,
250)
self.your_image.set_from_pixbuf(self.bottom_image)