所以我最近开始学习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)