Webbrowser back button in python

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Comput3rfr3ak
User
Beiträge: 6
Registriert: Freitag 28. Oktober 2016, 18:02

Freitag 28. Oktober 2016, 18:09

Wie macht mann diesen? Python ist für mich Neuland.
Sirius3
User
Beiträge: 7785
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 28. Oktober 2016, 18:31

@Comput3rfr3ak: Du willst einen Knopf auf dem »back« steht? Welches Rahmenwerk für graphische Benutzereingaben verwendest Du denn?
Comput3rfr3ak
User
Beiträge: 6
Registriert: Freitag 28. Oktober 2016, 18:02

Freitag 28. Oktober 2016, 19:18

Sirius3 hat geschrieben:@Comput3rfr3ak: Du willst einen Knopf auf dem »back« steht? Welches Rahmenwerk für graphische Benutzereingaben verwendest Du denn?
vim bzw gtk weiß nicht genau was du meinst
BlackJack

Freitag 28. Oktober 2016, 19:40

@Comput3rfr3ak: Da geht es uns nicht anders. :-) vim und gtk sind zwei sehr unterschiedliche Sachen. Das eine ist ein Texteditor und das andere ein GUI-Rahmenwerk.

„Webbrowser back button in python; Wie macht mann diesen?“ ist an sich schon mal eine recht eigenartige Frage. Spontane Antwort wäre: Gar nicht, weil man schon einen Webbrowser eher nicht in Python schreiben würde. Wenn man das doch machen möchte, dann reicht diese Frage ohne zusätzliche Informationen nicht aus. Und es wäre sicherlich auch nicht die erste Frage die sich dabei stellen würde.

Schreib doch mal etwas ausführlicher was genau das Problem ist welches Du lösen möchtest.
Comput3rfr3ak
User
Beiträge: 6
Registriert: Freitag 28. Oktober 2016, 18:02

Freitag 28. Oktober 2016, 20:08

BlackJack hat geschrieben:@Comput3rfr3ak: Da geht es uns nicht anders. :-) vim und gtk sind zwei sehr unterschiedliche Sachen. Das eine ist ein Texteditor und das andere ein GUI-Rahmenwerk.

„Webbrowser back button in python; Wie macht mann diesen?“ ist an sich schon mal eine recht eigenartige Frage. Spontane Antwort wäre: Gar nicht, weil man schon einen Webbrowser eher nicht in Python schreiben würde. Wenn man das doch machen möchte, dann reicht diese Frage ohne zusätzliche Informationen nicht aus. Und es wäre sicherlich auch nicht die erste Frage die sich dabei stellen würde.

Schreib doch mal etwas ausführlicher was genau das Problem ist welches Du lösen möchtest.
Mann kann ja in python (soll ja nur ein testprogramm sein) einen Browser erstellen mit webkit.webview ist bei mir web

Jetzt kann man ja mit

Code: Alles auswählen

gobutton = gtk.Button("Los")
box2.pack_start(gobutton)
gobutton.connect('clicked', go_but)
und

Code: Alles auswählen

def go_but(widget):
    add = addressbar.get_text()
    if add.startswith("https://"):
        web.open(add)
    else:
        add = "https://" + add
        addressbar.set_text(add)
        web.open(add)
einen gobutton erstellen geht das auch mit Refresh, Vor und Zurück
Zuletzt geändert von Anonymous am Freitag 28. Oktober 2016, 20:23, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

Freitag 28. Oktober 2016, 20:32

@Comput3rfr3ak: Ja das geht. Genau so wie das mit der 'Los'-Schaltfläche gemacht wurde.
Comput3rfr3ak
User
Beiträge: 6
Registriert: Freitag 28. Oktober 2016, 18:02

Samstag 29. Oktober 2016, 14:36

BlackJack hat geschrieben:@Comput3rfr3ak: Ja das geht. Genau so wie das mit der 'Los'-Schaltfläche gemacht wurde.
Funktioniert bei mir nicht welcher Befehl?
BlackJack

Samstag 29. Oktober 2016, 14:58

@Comput3rfr3ak: Was heisst ”funktioniert nicht”? Was genau hast Du gemacht? Wie sieht der Code aus? Was hast Du erwartet und was ist stattdessen passiert? Ist der Rechner explodiert? Hat die Katze den Hamster gefressen? Oder umgekehrt? Gab es eine Fehlermeldung? Wenn ja wie lautete die? 1:1. Komplett.
Comput3rfr3ak
User
Beiträge: 6
Registriert: Freitag 28. Oktober 2016, 18:02

Samstag 29. Oktober 2016, 16:23

BlackJack hat geschrieben:@Comput3rfr3ak: Was heisst ”funktioniert nicht”? Was genau hast Du gemacht? Wie sieht der Code aus? Was hast Du erwartet und was ist stattdessen passiert? Ist der Rechner explodiert? Hat die Katze den Hamster gefressen? Oder umgekehrt? Gab es eine Fehlermeldung? Wenn ja wie lautete die? 1:1. Komplett.
Der Befehl lautet web.back() und der fehler

gtk.button has no attribute named webview
BlackJack

Samstag 29. Oktober 2016, 17:05

@Comput3rfr3ak: ``web.back()`` ist kein Befehl. `web` ist ein Objekt, nach Deinen Aussagen ein `WebView`-Exemplar, und da wird das `back`-Attribut mit dem Punktoperator abgefragt und dann aufgerufen. Was aber nicht funktionieren wird, weil `WebView`-Exemplare kein `back`-Attribut haben:

Code: Alles auswählen

In [10]: from gi.repository import WebKit

In [11]: web = WebKit.WebView()

In [12]: web.back()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-12-015de50be2bf> in <module>()
----> 1 web.back()

AttributeError: 'WebView' object has no attribute 'back'
So sähe das übrigens aus wenn man ein *komplettes*, minimales, nachvollziehbares Beispiel inklusive *kompletter* Fehlermeldung zeigt. Du musst echt mal ein bisschen gesprächiger werden und lauffähigen Quelltext zeigen, am besten auf das Problem zusammengekürzt, und von Tracebacks nicht nur die letzte Zeile.

Falls meine eben hier getroffenen Annahmen stimmen, kann ``web.back()`` nicht zu ``gtk.button has no attribute named webview`` führen, weil da gar kein `Button`-Objekt beteiligt ist. Ausserdem sähe so eine Fehlermeldung (nur die letzte Zeile) bei mir so aus: ``AttributeError: 'Button' object has no attribute 'webview'``. Also machst Du irgendwas anders. *Was* das ist, kann aber keiner ausser Dir sagen. Man müsste das aber wissen um irgendwie helfen zu können.
Comput3rfr3ak
User
Beiträge: 6
Registriert: Freitag 28. Oktober 2016, 18:02

Samstag 29. Oktober 2016, 21:05

BlackJack hat geschrieben:@Comput3rfr3ak: ``web.back()`` ist kein Befehl. `web` ist ein Objekt, nach Deinen Aussagen ein `WebView`-Exemplar, und da wird das `back`-Attribut mit dem Punktoperator abgefragt und dann aufgerufen. Was aber nicht funktionieren wird, weil `WebView`-Exemplare kein `back`-Attribut haben:

Code: Alles auswählen

In [10]: from gi.repository import WebKit

In [11]: web = WebKit.WebView()

In [12]: web.back()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-12-015de50be2bf> in <module>()
----> 1 web.back()

AttributeError: 'WebView' object has no attribute 'back'
So sähe das übrigens aus wenn man ein *komplettes*, minimales, nachvollziehbares Beispiel inklusive *kompletter* Fehlermeldung zeigt. Du musst echt mal ein bisschen gesprächiger werden und lauffähigen Quelltext zeigen, am besten auf das Problem zusammengekürzt, und von Tracebacks nicht nur die letzte Zeile.

Falls meine eben hier getroffenen Annahmen stimmen, kann ``web.back()`` nicht zu ``gtk.button has no attribute named webview`` führen, weil da gar kein `Button`-Objekt beteiligt ist. Ausserdem sähe so eine Fehlermeldung (nur die letzte Zeile) bei mir so aus: ``AttributeError: 'Button' object has no attribute 'webview'``. Also machst Du irgendwas anders. *Was* das ist, kann aber keiner ausser Dir sagen. Man müsste das aber wissen um irgendwie helfen zu können.

Code: Alles auswählen

backbutton = gtk.button("<-")
box2.pack_backbutton(backbutton)
backbutton.connect('clicked', back_but)
und

Code: Alles auswählen

back_but(widget):
web.back
Zuletzt geändert von Anonymous am Samstag 29. Oktober 2016, 21:18, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

Samstag 29. Oktober 2016, 21:32

@Comput3rfr3ak: Der zweite Quelltextschnippsel ist syntaktisch falsch, der kommt nicht einmal am Compiler vorbei. Zudem reicht der Code bei weitem nicht aus das Problem nachzustellen, denn es fehlt der Code wo `web` überall zugewiesen wird, damit der Name beim Aufruf der Rückruffunktion nicht mehr an das `WebView`-Exemplar sondern eine Schaltfläche gebunden ist. Und im ersten Quelltextschnippsel wird die zweite Zeile mit Sicherheit so nicht laufen. Wenn Hilfe zu Deinem Code haben willst, dann musst Du schon Deinen *tatsächlichen* Code zeigen und weder Code der so ähnlich aussieht wie das was Du *wirklich* laufen lässt, noch Fehlermeldungen die so ähnlich abgetippt wurden. Anders ist das alles nur ein wildes raten und stochern im Nebel. Solange Du Dein Problem nicht als minimales aber *lauffähiges* Programm mit einer 1:1 Kopie der tatsächlichen und *kompletten* Ausnahme präsentierst, mit einer Prosabeschreibung was man machen muss um zu dieser Ausnahme zu gelangen, bin ich aus dem Thema hier raus. :K
Antworten