自动刷新标签python

时间:2013-02-03 06:58:18

标签: python ubuntu webkit pygtk

# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
### BEGIN LICENSE
# Copyright (C) 2012 Marios Papachristou mrmarios97@gmail.com
# This program is free software: you can redistribute it and/or modify it 
# under the terms of the GNU General Public License version 3, as published 
# by the Free Software Foundation.
# 
# This program is distributed in the hope that it will be useful, but 
# WITHOUT ANY WARRANTY; without even the implied warranties of 
# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR 
# PURPOSE.  See the GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License along 
# with this program.  If not, see <http://www.gnu.org/licenses/>.
### END LICENSE


import gettext
from gettext import gettext as _
gettext.textdomain('quickbrowser')

from gi.repository import Gtk, WebKit # pylint: disable=E0611
import logging
logger = logging.getLogger('quickbrowser')

from quickbrowser_lib import Window
from quickbrowser.AboutQuickbrowserDialog import AboutQuickbrowserDialog
from quickbrowser.PreferencesQuickbrowserDialog import PreferencesQuickbrowserDialog


# See quickbrowser_lib.Window.py for more details about how this class works
class QuickbrowserWindow(Window):
    __gtype_name__ = "QuickbrowserWindow"

    def finish_initializing(self, builder): # pylint: disable=E1002
        """Set up the main window"""
        super(QuickbrowserWindow, self).finish_initializing(builder)

        self.AboutDialog = AboutQuickbrowserDialog
        self.PreferencesDialog = PreferencesQuickbrowserDialog
        self.goBack = self.builder.get_object('goBack')
        self.homeButton = self.builder.get_object('homeButton')
        self.refreshButton = self.builder.get_object('refreshButton')
        self.goButton = self.builder.get_object('goButton')
        self.currentaddresslabel = self.builder.get_object('currentaddresslabel')
        self.addressbar = self.builder.get_object('addressbar')
        self.viewwindow = self.builder.get_object('viewwindow')
        self.goForward = self.builder.get_object('goForward')
        self.zoomIn = self.builder.get_object('zoomIn')
        self.zoomOut = self.builder.get_object('zoomOut')
        self.webview = WebKit.WebView()
        self.viewwindow.add(self.webview)
        self.webview.show()




    def on_addressbar_activate(self, widget):
        address = widget.get_text()
        self.webview.open(address)


    def on_refreshButton_clicked(self, widget):
        self.webview.reload()

    def on_goBack_clicked(self,widget):
        self.webview.go_back();

    def on_goForward_clicked(self,widget):
        self.webview.go_forward();

    def on_zoomIn_activate(self,widget):
        self.webview.zoom_in();

    def on_zoomOut_activate(self,widget):
        self.webview.zoom_out();

    def on_goButton_clicked(self,widget):
        self.webview.open(self.addressbar.get_text())

我目前正在使用python-webkit在Python中开发Web浏览器。

上面的源代码是为了管理主窗口而编写的。

如何使用webview.get_uri()方法在标签内不断显示当前网址?

提前致谢

1 个答案:

答案 0 :(得分:0)

while True:
    updateLocationBar() # ;)

当然,位置栏已经提供了这个?您可以通过编写像

这样的包装器来调用self.webview.open()调用的标签修改函数
def self.webview.mysuperawesomeopen(uri):
    updateLocationBar()
    self.webview.open(uri)

然后适当地修改调用。或者,如果您不想更改呼叫,只需移动现有的.open()功能,如

self.webview.openit = self.window.open
def self.window.open(uri):
    updateLocationBar()
    self.webview.openit(uri)

修改:您还可以在self.window.open()上使用功能装饰器

def labelled(f):
    def labelgo(*args, **kwargs):
        updateLocationBar(*args, **kwargs)
        self.webview.open(*args, **kwargs)
    return labelgo

@labelled # You add this and leave the rest of self.window.open alone
def self.window.open(uri):
    ...

如果你想要概括(并且你会使标记的装饰器更通用 - 这就是一个更好的解决方案 - 我把这个简单作为一个例子)。