【问题标题】:how do I overlay an image on webview using python Gtk and webkit如何使用 python Gtk 和 webkit 在 webview 上叠加图像
【发布时间】:2014-02-05 19:13:55
【问题描述】:

我需要有关如何在 web 视图上叠加图像的帮助。我希望能够在网页上放置按钮或图像(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()

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

【问题讨论】:

    标签: python webview webkit gtk pygtk


    【解决方案1】:

    GTK+3 为此有一个dedicated APIGtkOverlay(更具体地说:它是在 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()
    

    【讨论】:

    • 知道了。非常感谢你我的朋友。绝对值得升级到 GTK+3,再次感谢 amcn 的帮助。
    • @Ayub 没问题。编码愉快!
    • 嗨,我对 python GTK Webview 有疑问。链接到我的问题。 stackoverflow.com/questions/68730967/… 我无法刷新我的网页。我正在使用 HTML + JavaScript 文件加载一些内容并运行时在 Lava 脚本文件上添加数据,但它没有使用最新数据进行刷新。总是有初始数据
    【解决方案2】:

    怀疑这个操作仍然有任何用处,所以我将把它留给碰巧被没有覆盖功能的 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多