Hallo ich bin neu in Python und WebKit. Also habe ich eine einfache Gtk-App erstellt, die in einer WebKit.WebView eine Liste von Internet-Seiten lädt und wenn eine Seite geladen wird, gibt es eine DOM-Bindung, um den Titel der Website zu übernehmen. Dies geschieht durch eine for-Schleife, die die Standorte nacheinander lädt. Aber beim ersten Durchlauf der for-Schleife überbrückt der Prozess das Signal 'Laden beendet' von WebView.connect und beginnt, Ergebnisse von dem zweiten Element der Liste zu erhalten. ich etwas Hilfe möchte plz ...Problem mit WebKit.WebView Signale in for Schleife
# !/usr/bin/python
# -*- coding: UTF-8 -*-
import threading
from time import sleep
import gi
gi.require_version('WebKit', '3.0')
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, WebKit
source = ["http://imdb.com", "http://cnn.com",
"http://wikipedia.org", "http://nokia.com"]
class MainWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.set_border_width(10)
self.set_default_size(1024, 768)
self.notebook = Gtk.Notebook()
self.add(self.notebook)
self.page1 = Gtk.Box()
self.page1.set_border_width(10)
self.page1.set_margin_left(5)
self.page1.set_margin_right(5)
self.page1.set_margin_top(5)
mainbox = Gtk.Box()
box1 = Gtk.VBox()
box2 = Gtk.Box()
buttoncall = Gtk.Button("Start")
buttoncall.connect('clicked', self.help)
buttoncall.set_size_request(50, 50)
scrolled = Gtk.ScrolledWindow()
scrolled.set_border_width(10)
scrolled.set_size_request(300, 300)
scrolled.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS)
self.web1 = WebKit.WebView()
self.web1.set_editable(False)
self.web1.load_uri("")
scrolled.add(self.web1)
box1.pack_start(buttoncall, False, False, 10)
mainbox.pack_start(box1, False, False, 0)
mainbox.pack_start(box2, True, True, 0)
box1.add(scrolled)
self.page1.pack_start(mainbox, True, True, 0)
self.notebook.append_page(self.page1, Gtk.Label("Search info"))
def get_source(self):
print("enterded source")
html = self.web1.get_main_frame().get_title()
return html
def help(self, widget):
threading.Thread(target=self.start_it, args=(widget)).start()
def start_it(self,widget):
for i in range(len(source)):
print(source[i])
self.web1.load_uri(source[i])
while (int(self.web1.get_load_status() != 2)):
sleep(0.5)
print("loading page")
self.web1.connect('load-finished', self.finished_load)
def finished_load(self, web1, frame):
print("get finished")
c = self.get_source()
print(c)
window = MainWindow()
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()