【问题标题】:how to open a tab in a web browser using python如何使用python在网络浏览器中打开选项卡
【发布时间】:2018-09-28 17:39:48
【问题描述】:

我正在用 python 开发一个网络浏览器,我想给它添加标签。 我不知道该怎么做。

我当前的浏览器标签功能代码是这样的:

#!/usr/bin/env python
import gtk, webkit
import webbrowser

#WOW
class visionbrowser():

    def __init__(self):
        # Create window
        self.much_window = gtk.Window()
        #self.much_window.set_icon_from_file('mAILogo3p.png')
        self.much_window.connect('destroy', lambda w: gtk.main_quit())
        self.much_window.set_default_size(1600, 1200)

        # Create navigation bar
        self.so_navigation = gtk.HBox()

        self.many_back = gtk.ToolButton(gtk.STOCK_GO_BACK)
        self.such_forward = gtk.ToolButton(gtk.STOCK_GO_FORWARD)
        self.very_refresh = gtk.ToolButton(gtk.STOCK_REFRESH)
        self.wow_address_bar = gtk.Entry()
        self.new_tab = gtk.Button()

        self.many_back.connect('clicked', self.go_back)
        self.such_forward.connect('clicked', self.go_forward)
        self.very_refresh.connect('clicked', self.refresh_page)
        self.wow_address_bar.connect('activate', self.load_page)
        self.new_tab.connect('clicked', self.tab_new)

        self.so_navigation.pack_start(self.many_back, False)
        self.so_navigation.pack_start(self.such_forward, False)
        self.so_navigation.pack_start(self.very_refresh, False)
        self.so_navigation.pack_start(self.wow_address_bar)
        self.so_navigation.pack_start(self.new_tab)

        # Create view for webpage
        self.very_view = gtk.ScrolledWindow()
        self.such_webview = webkit.WebView()
        self.such_webview.open('http://google.com')
        self.such_webview.connect('title-changed', self.change_title)
        self.such_webview.connect('load-committed', self.change_url)
        self.very_view.add(self.such_webview)

        # Add everything and initialize
        self.wow_container = gtk.VBox()
        self.wow_container.pack_start(self.so_navigation, False)
        self.wow_container.pack_start(self.very_view)

        self.much_window.add(self.wow_container)
        self.much_window.show_all()
        gtk.main()

    def load_page(self, widget):
        so_add = self.wow_address_bar.get_text()
        if so_add.startswith('http://') or so_add.startswith('https://'):
            self.such_webview.open(so_add)
        else:
            so_add = 'http://' + so_add
            self.wow_address_bar.set_text(so_add)
            self.such_webview.open(so_add)

    def tab_new(self, widget):
        self.open_new_tab()

    def change_title(self, widget, frame, title):
        self.much_window.set_title('[Vision Browser by Maverick A.I.] -->> ' + title)

    def change_url(self, widget, frame):
        uri = frame.get_uri()
        self.wow_address_bar.set_text(uri)

    def go_back(self, widget):
        self.such_webview.go_back()

    def go_forward(self, widget):
        self.such_webview.go_forward()

    def refresh_page(self, widget):
        self.such_webview.reload()

wow = visionbrowser()

浏览器可以正常工作并打开,我可以打开网页,一切都很好。但是,当我单击我的选项卡按钮以添加新选项卡时,我得到 tghis 错误:

self.open_new_tab()
AttributeError: visionbrowser instance has no attribute 'open_new_tab'

有没有办法使用 gtk 或 python webbrowser 打开选项卡?如果是这样 - 在我上面的代码中实现它的最佳和最正确的方法是什么

注意:我已经尝试过 python webbrowser (import webbrowser),它只是抛出一个错误,说 open_tab 现在是一个可识别的 gtk 命令。

谢谢。

【问题讨论】:

    标签: python gtk twebbrowser


    【解决方案1】:

    首先,您的 visionbrowser 类没有 open_new_tab 方法。其次,您使用了错误的方法。有

    webbrowser.open_new_tab("https://docs.python.org/2/library/webbrowser.html")
    

    或

     webbrowser.open_new("https://docs.python.org/2/library/webbrowser.html")
    

    【讨论】:

    • 我按照您的建议进行了尝试,它在 chrome 浏览器中打开了一个新选项卡,而不是在我的 python 浏览器中。任何理想的 j 做错了什么?
    猜你喜欢
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    • 2018-08-29
    • 2014-11-15
    • 1970-01-01
    • 2016-09-02
    • 2022-12-09
    • 2013-02-06
    相关资源
    最近更新 更多