как установить pythonwebkit и pywebkitgtk в Ubuntu? - PullRequest
0 голосов
/ 04 апреля 2011

Я новичок в использовании Ubuntu. я хочу установить pythonwebkit и pywebkitgtk в Ubuntu, но я пробовал долгое время. даже если я могу установить, но, извиняюсь за этот код,

#!/usr/bin/env python

import pygtk
pygtk.require("2.0")
import gi
from gi.repository import WebKit as webkit, Gtk as gtk

dir(gtk)
print dir(gtk.WindowType)

init_string="""



<div id="testing">testing</div>
<div><button id="link">CLICK ME</button>


"""

class Browser:
    # Ventana del programa
    def __init__(self):
        self.window = gtk.Window(type=gtk.WindowType.TOPLEVEL)
        self.window.set_position(gtk.WindowPosition.CENTER)
        self.window.set_default_size(800, 600)
        self.window.fullscreen()
        self.window.connect("destroy", self.on_quit)

        # Un vBox, en la parte de arriba hay una caja para ingresar
        # la direccion web, y abago se muestra la pagina
        vbox = gtk.VBox()

        # La parte en donde se muestra la pagina que se visita (con scroll incluido)
        self.scroll_window = gtk.ScrolledWindow()
        self.webview = webkit.WebView()
        print dir(self.webview)

        #self.scroll_window.add(self.webview)

        # Unimos todo en el vBox
        #vbox.pack_start(self.url_text, True, False, 0)
        # El expand=False al empaquetarlo es para que el entry no ocupe media pantalla
        #vbox.pack_start(self.scroll_window, True, True, 0)
        #self.window.add(vbox)
        self.window.add(self.webview)
        self.window.show_all()
        self.webview.load_string(init_string, "text/html", "utf-8", '#')
        doc = self.webview.get_dom_document()
        self.webview.connect('document-load-finished', self.onLoad)
        print doc
        print dir(doc)

    def onLoad(self, param1, param2):
        print "STARTING"
        doc = self.webview.get_dom_document()
        div = doc.get_element_by_id('testing')
        print div
        print dir(div)
        print div.get_inner_html()
        div.set_inner_html('DYNAMIC TEXT')

        link = doc.get_element_by_id('link')
        #print link
        #print dir(link)
        link.connect('click-event', self.onClick, link)
        #div.connect_object('click-event', self.onClick, link)

    def print_childs(self, elem):
        childs = elem.get_child_nodes()
        for c in range(childs.get_length()):
            i=childs.item(c)
            #print dir(i)
            print "%s - %s\n" %(i.get_tag_name(), i.get_inner_html())
            self.print_childs(i)

    def onClick(self, p1, p2, p3=None):
        print "CLICKED - %s %s %s " % (str(p1), str(p2), str(p3))
        #return False

    def on_quit(self, widget):
        gtk.main_quit()

if __name__ == "__main__":
    browser = Browser()
    try:
      while True:
          gtk.main_iteration()
    except:
      gtk.quit()
      print "BAILING OUT!"

"doc = self.webview.get_dom_document ()" не может пройти, ошибка в том, что у webview нет атрибута get_dom_document. что я могу сделать? я должен получить доступ к дереву, пожалуйста! я знаю, как я устанавливаю pythonwebkit или pywebkitgtk что-то не так, но я не могу сделать правильно. кто-то может помочь?

1 Ответ

0 голосов
/ 04 апреля 2011

Запустите ваши import директивы в интерпретаторе.

Если это не вызывает каких-либо исключений (как я понимаю, откуда вы говорите, возникает ошибка), то проблема, скорее всего, не в установке библиотек, и не имеет никакого отношения к Ubuntu.

Python не говорит «эй, это неправильно установлено», он говорит «эй, вы неправильно обрабатываете этот объект! Функция, которой вы хотите достичь, отсутствует! '.

Перепроверьте соответствующую документацию и посмотрите, как получить дерево DOM.

изменить - я получил это из быстрого запроса Google.

def _view_load_finished_cb(self, view, frame):
        doc = frame.get_dom_document()
        nodes = doc.getElementsByTagName('body')
        body = nodes.item(0)

Вы пытаетесь получить доступ к дереву DOM из объекта, который его не предоставляет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...