你是如何添加到 ScrolledWindow 的?我不是 GTK 专家,但我发现如果你调用“add”方法它会起作用,如果你调用 add_with_viewport 就不起作用
此外,您可能不需要执行 javascript。看起来您可以控制 html 页面,并且可以轻松访问 dom 元素并在元素上调用 click 方法。以下示例 python 代码查找 id 为“one”的锚点并滚动到所需位置而不调用 javascript。
from gi.repository import WebKit
from gi.repository import Gtk
from gi.repository import GLib, GObject
class WebkitApp:
def exit(self, arg, a1):
Gtk.main_quit()
def onLoad(self, view, frame):
doc = view .get_dom_document()
a = doc.get_element_by_id("one")
a.click()
def __init__(self):
win = Gtk.Window()
self.view = WebKit.WebView()
# Signal Connections
self.view.connect("onload-event", self.onLoad)
file = open("/tmp/epl-v10.html")
html = file.read()
self.view.load_string(html, "text/html", "UTF-8", "file:///tmp")
sw = Gtk.ScrolledWindow()
# sw.add_with_viewport(self.view)
sw.add(self.view);
win.add(sw)
win.maximize()
win.connect("delete-event", self.exit)
win.show_all()
app = WebkitApp()
Gtk.main()