python - 添加从浏览器启动命令的可能性

标签 python browser

我有一个简单的 python 浏览器

#!/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就足够了。)

最佳答案

在ubuntu上安装PySide

# apt-get install python-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_())

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

关于python - 添加从浏览器启动命令的可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963508/

相关文章:

python - 在Python中导入深度嵌套的模块

c# - 输入标记 InvokeMember ("Click") 未在 Web 浏览器中触发 onclick 事件

javascript - 未捕获的类型错误 : Cannot read property 'document' of undefined

c++ - 获取 libstdc++-v3/python

Python unicode规范化: is it correct to translate u'\xb 4' to u' \u0301'

Python 意外移动带有 os.rename 的文件

javascript - 使用html在浏览器中显示JSON字典

python - 为稍后的循环迭代安排协程

javascript - 浏览器推送通知获取文本

javascript - 用于检查 Javascript 对象是否为 html 元素的跨浏览器解决方案