Kapitel 28
Benutzungsoberflächen mit Qt
802
Erläuterung:
#1: Dieser lange String enthält einen HTML-Text, der gezeigt wird, wenn eine verbotene
Seite geladen worden ist.
#2: Die Statusvariable stopped trägt nur dann den Wert True, wenn eine verbotene Seite
erkannt worden ist. Der Anfangswert ist
False.
#3: Wenn der Benutzer eine neue Seite aufruft, wird zunächst angenommen, dass sie
erlaubt ist und deswegen die Statusvariable
stopped auf False gesetzt.
#4: Diese (neue) Methode prüft, ob der aktuelle URL in Ordnung ist. Sie wird ausgeführt,
wenn eine neue Webseite aufgerufen worden ist und das
QWebView-Objekt ein urlChanged-
Signal gesendet hat.
#5: Nur wenn nicht bereits der Besuch der Webseite gesperrt worden ist, wird (in der if-
Klausel) der aktuelle URL geprüft.
#6: Hier wird ein String erzeugt, der den aktuellen URL enthält.
#7: Der Aufruf der Standardfunktion any() liefert einen Wahrheitswert. Er ist True, wenn
es in der Liste
self.whiteList wenigstens ein Element x gibt, das Teilstring des URLs ist.
In diesem Fall handelt es sich um einen erlaubten URL.
#8: Wenn der aktuelle URL nicht erlaubt ist (keiner der Strings aus der weißen Liste kommt
im URL vor), wird die Statusvariable
stopped auf True gesetzt. Das verhindert, dass das Sys-
tem in eine Endloswiederholung gelangt. Denn infolge der Meldung in Zeile
#10 wird wie-
der ein
urlChanged-Signal gesendet. Ohne Kontrolle mit der Statusvariablen würde wieder
ein nicht-erlaubter URL erkannt und wieder eine Meldung ausgegeben, die erneut ein
url-
Changed
-Signal zur Folge hätte, usw.
#9: Der Ladevorgang wird (vorzeitig) beendet.
#10: Die HTML-Seite mit der Meldung »Sorry ...« wird im QWebView-Fenster angezeigt.
28.21 Surfen mit Geschichte – der Verlauf einer Sitzung
Das QWebView-Objekt verwaltet auch den Verlauf der Sitzung. Es speichert die URLs und
andere Informationen zu den in der Vergangenheit aufgerufenen Webseiten in der so
genannten History. Wir erweitern nun den Browser um eine Schaltfläche V
ERLAUF. Klickt
man sie an, so erscheint eine Liste mit Links zu den bisher besuchten Webseiten (Abbildung
28.25). Man sieht die Titel der Webseiten, klickt man einen Titel an, wird über den zugehö-
rigen URL die Seite geladen.
self.webView.stop() #9
self.webView.setHtml(HINT) #10
...
def createConnections(self):
...
self.webView.urlChanged.connect(self.checkUrl)
803
28.21
Surfen mit Geschichte – der Verlauf einer Sitzung
Abb. 28.25: Verlauf einer Browser-Sitzung
Definieren Sie eine Konstante mit einem langen String, der ein Muster für die HTML-Seite
mit dem Verlauf enthält. Unter der Überschrift ist ein Platzhalter
%s, der später durch die
Liste der Links auf besuchte Seiten ersetzt wird:
In der Definition der Klasse
Browser definieren Sie eine neue Methode, die die Linkliste aus
der History berechnet:
Erläuterung:
#1: Hier wird eine Liste aus Items der History erzeugt. Jedes Element dieser Liste ist ein
Objekt der Klasse
QWebHistoryItem und repräsentiert eine besuchte Webseite.
#2: Die Liste der Items wird durchlaufen. Aus einem Item i wird ein Tupel aus zwei Strings
gewonnen. Sie stellen einen URL und den Titel einer Seite dar. Diese beiden Strings werden
dann durch eine Formatierung mit
% in das Muster einer Zeile eingefügt. Das heißt, die bei-
HISTORY_PATTERN = """
<html><body bgcolor="#C0C0FF">
<h1>Verlauf</h1>
%s
</body></html>"""
def showHistory(self):
history = self.webView.history().items() #1
htmlHistory = ""
for i in history:
htmlHistory += '<a href="%s"> %s </a><br/>' \
% (i.url().toString(), i.title()) #2
self.webView.setHtml(HISTORY_PATTERN % htmlHistory)

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.