2015-06-21 67 views
2

发出命令我有蟒蛇简单的浏览器添加可能性从浏览器

#!/usr/bin/env python 
import sys 
import gtk 
import webkit 
DEFAULT_URL = 'http://www.stackoverflow.com' # Change this as you Wish 
class SimpleBrowser: # needs GTK, Python, Webkit-GTK 
    def __init__(self): 
     self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
     self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS) 
     self.window.connect('delete_event', self.close_application) 
     self.window.set_default_size(350, 20) 
     vbox = gtk.VBox(spacing=5) 
     vbox.set_border_width(5) 
     self.txt_url = gtk.Entry() 
     self.txt_url.connect('activate', self._txt_url_activate) 
     self.scrolled_window = gtk.ScrolledWindow() 
     self.webview = webkit.WebView() 
     self.scrolled_window.add(self.webview) 
     vbox.pack_start(self.scrolled_window, fill=True, expand=True) 
     self.window.add(vbox) 
    def _txt_url_activate(self, entry): 
     self._load(entry.get_text()) 
    def _load(self, url): 
     self.webview.open(url) 
    def open(self, url): 
     self.txt_url.set_text(url) 
     self.window.set_title('%s' % url) 
     self._load(url) 
    def show(self): 
     self.window.show_all() 
    def close_application(self, widget, event, data=None): 
     gtk.main_quit() 
if __name__ == '__main__': 
    if len(sys.argv) > 1: 
     url = sys.argv[1] 
    else: 
     url = DEFAULT_URL 
    gtk.gdk.threads_init() 
    browser = SimpleBrowser() 
    browser.open(url) 
    browser.show() 
    gtk.main() 

,我想我的浏览器必须点击图片以改变当前系统上的壁纸的可能性。 (我只是需要一个例子,我不需要的可移植性只是现在,只要在shell执行命令时的onclick就足够了。)

+0

https://forum.qt.io/topic/10627/subclass-of-qwebview-doesn-t-detect-react-to-hyperlink-clicks http://pysnippet.blogspot.com/2010/01 /calling-python-from-javascript-in-pyqts.html 在DOMReady上添加一些JavaScript,它将调用带图片url的python。 – outoftime

+0

你正在使用什么操作系统? – outoftime

回答

2

在Ubuntu

# apt-get install python-pyside 

安装PySide或者找到如何安装它到您的平台

import PySide.QtWebKit 
import sys 
from PyQt4 import QtGui 


class BrowserWindow(PySide.QtWebKit.QWebView): 

    SCRIPT_TEMPLATE = 'document.elementFromPoint({}, {});' 

    def __init__(self, _parent): 
     super(BrowserWindow, self).__init__() 
     PySide.QtWebKit.QWebView(None) 
     print('init') 

    def mousePressEvent(self, event): 
     # prepare script to execute 
     frame = self.page().mainFrame() 
     scroll = frame.scrollPosition() 
     x = scroll.x() + event.x() 
     y = scroll.y() + event.y() 
     script = self.SCRIPT_TEMPLATE.format(x, y) 

     # get 'src' attribute 
     obj = frame.evaluateJavaScript(script) 
     if 'src' in obj: 
      src = obj['src'] 
     else: 
      src = None 

     # delegate event handling to super class 
     if not src: 
      return super(BrowserWindow, self).mousePressEvent(event) 

     # download image and set wallpaper 


if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    view = BrowserWindow(None) 
    view.load("http://google.com") 
    view.show() 
    sys.exit(app.exec_()) 

您需要了解如何通过网址下载图片并将其设置为您的操作系统的壁纸。两者都是微不足道的。

+0

这看起来很棒,非常感谢,我会更多地关注它。 –

+0

@bobdylan尝试修改'SCRIPT_TEMPLATE'以仅在元素为'img'时才能获取src url。 – outoftime