代码之家  ›  专栏  ›  技术社区  ›  ironmantis7x

如何使用python在web浏览器中打开选项卡

  •  0
  • ironmantis7x  · 技术社区  · 6 年前

    我正在用python开发一个web浏览器,我想给它添加选项卡。

    浏览器选项卡功能的当前代码如下:

    #!/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()
    

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

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

    注意:我试过pythonwebbrowser(import-webbrowser),它只是抛出一个错误,说open\u tab现在是一个可识别的gtk命令。

    1 回复  |  直到 6 年前
        1
  •  1
  •   sawim    6 年前

    首先,visionbrowser类没有open\u new\u tab方法。其次,你使用了错误的方法。有

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

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