Python,GTK,WebKit - webview的多个实例

时间:2014-05-03 22:15:08

标签: python webkit gtk

所以我最近开始学习Python,使用python,gtk和webkit构建浏览器。

我只是遇到了一件事。在大多数情况下,我可以解决这些问题,但确实遇到了这个问题。

我有一个添加新标签的按钮。它给了它自己的位置'当我在标签标签中填充网站标题时,为以后标识自己。目前,标签默认为选项卡号。我有以下代码在标签页面内创建标签和Gtk.ScrolledWindow的新实例,然后我尝试在相应的滚动窗口中添加一个WebKit WebView,但它会发出错误消息

代码:

def on_addtab_clicked(self, widget):
    self.num = self.num + 1
    self.newtablabel = Gtk.Label(self.num)
    self.newpagelabel = Gtk.ScrolledWindow()
    self.notebook.insert_page(self.newpagelabel, self.newtablabel, self.num)
    self.scrolledwindow.add(self.webview)
    print self.notebook.get_current_page()
    print self.num
    self.get_pages()
    self.notebook.show_all()
    self.show_all()

错误:

Gtk-WARNING **:尝试将类型为WebKitWebView的窗口小部件添加到GtkScrolledWindow类型的容器中,但窗口小部件已经在GtkScrolledWindow类型的容器中,请使用gtk_widget_reparent()

我需要在这里创建一个全新的WebKit实例吗?我肯定错过了一些东西。任何帮助将不胜感激。

如果您想查看整个代码,请使用Pastebin:http://pastebin.com/vXcLd1tT

问题视频:https://www.youtube.com/watch?v=XhtJDrWr8t8&feature=youtu.be

更新:

所以我更新了代码,为每个打开的新标签添加了一个新的webkit.webview,并且它有效。您可以在每个页面上获得右键菜单,但是,地址栏现在无法正常运行。有没有办法获取当前打开的webview(活动的)的ID并将url请求直接推送到那个?然后,当您切换到新标签页时,网址将转到正确的页面:

def on_addtab_clicked(self, widget):
    self.num = self.num + 1
    self.newtablabel = Gtk.Label(self.num)
    self.newpagelabel = Gtk.ScrolledWindow()
self.newpagelabel.add(WebKit.WebView())
WebKit.WebView().show()
    self.notebook.insert_page(self.newpagelabel, self.newtablabel, self.num)
    print self.notebook.get_current_page()
    print self.num
    self.get_pages()
    self.notebook.show_all()
    self.show_all()

def on_urlentry_activate(self, widget):
    url = widget.get_text()
    if ' ' in url:
        url = 'https://www.google.ca/search?q=' + url
        self.urlentry.set_text(url)
    elif '.' not in url:
        url = 'https://www.google.ca/search?q=' + url
        self.urlentry.set_text(url)
    elif not url.startswith('http'):
        url = 'http://' + url
        self.urlentry.set_text(url)

    WebKit.WebView().open(url)

0 个答案:

没有答案