Browser Objekt mit Python

Fragen zu Tkinter.
Antworten
spooky0815
User
Beiträge: 23
Registriert: Montag 27. Februar 2006, 19:24

Hallo,

Ich möchte gern mittels Python Webseiten betrachten - in einem grafisches Python-Fenster integriert!!. Gibt es da ein vorgefertigtes Objekt (ähnlich wie bei VB), das ein Browserfenster kreiert. Ich würde mir ja auch nur den Quelltext laden und in Textform ansehen, aber auf einigen Seiten von mir sind Javaskripte, die dynamisch Links erstellen. Und genau diese benötige ich :(
Und ich komme somit nur an diese Links, wenn ein graf. Browser den Javaskript-Code parst und dadurch die Links erstellt.

ICH BITTE UM HILFE!!! :(((

:cry:

Danke,

Spooky
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

spooky0815 hat geschrieben:Ich möchte gern mittels Python Webseiten betrachten - in einem grafisches Python-Fenster integriert!!
Hi Spooky!

Ich habe keine TkInter-Lösung für dich. Nur den Hinweis auf ein Objekt unter wxPython, mit dem du den IE verwenden kannst.

wx.lib.iewin

Code: Alles auswählen

#----------------------------------------------------------------------
# Name:        wx.lib.iewin
# Purpose:     A class that allows the use of the IE web browser
#              ActiveX control
#
# Author:      Robin Dunn
#
# Created:     22-March-2004
# RCS-ID:      $Id: iewin.py,v 1.2 2004/12/17 02:01:08 RD Exp $
# Copyright:   (c) 2004 by Total Control Software
# Licence:     wxWindows license
#----------------------------------------------------------------------
Dann noch einen: http://wxmozilla.sf.net

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
spooky0815
User
Beiträge: 23
Registriert: Montag 27. Februar 2006, 19:24

Danke...ich habe wxPython installiert und mir einige Beispielskripte kopiert...alle brechen mit der Meldung:

class MyFrame(wx.Frame):
attributeError: 'module' object has no attribute 'Frame'

ab :/

Irgendwas mach ich falsch :(

gibts nicht doch ne Möglichkeit mit dem guten, alten Tkinter??

VG,

Spooky
BlackJack

Du hast nicht zufällig irgendwo eine Datei Namens `wx.py` im Pfad liegen, oder?

Was ergibt denn ein ``print dir(wx)``?
spooky0815
User
Beiträge: 23
Registriert: Montag 27. Februar 2006, 19:24

Hab den Fehler gefunden...

Nun wollte ich das Skript testen:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import wx
import wx.html

class MyHtmlFrame(wx.Frame):
	
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title, size=(600,400))
        self.CreateStatusBar()
        html = wx.html.HtmlWindow(self)
        if "gtk2" in wx.PlatformInfo:
            html.SetStandardFonts()
			
        html.SetRelatedFrame(self, self.GetTitle() + " -- %s")  
        html.SetRelatedStatusBar(0)  
        html.LoadPage("http://wxwidgets.org/manuals/2.5.4/wx_wxbutton.html")

app = wx.PySimpleApp()

frm = MyHtmlFrame(None, "Simple HTML Browser")
frm.Show()
app.MainLoop()
...leider kommt kein Fenster zum vorschein...nur der CPU-Load geht auf 100%.

Komischerweise ist das ein Standardbeispiel ... warum funktioniert das nicht??

Danke für jede Hilfe ;)

Spooky

Edit by Gerold: Code in Code-Tags gesetzt. Beim nächsten Mal bitte selber machen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

spooky0815 hat geschrieben:...leider kommt kein Fenster zum vorschein...nur der CPU-Load geht auf 100%.
Hi Spooky!

LoadPage funktioniert bei mir auch nicht. Das dürfte ein Bug sein. Allerdings kannst du mit wx.html.HtmlWindow sowiso nichts anfangen. Dieses HtmlWindow kann nur **einfachen** HTML-Code darstellen. Es ist nicht dafür geeignet, komplexere HTML-Seiten mit CSS oder JavaScript zu betrachten.

Ich dachte eher an wx.lib.iewin. Diese Klasse integriert den Internet Explorer als Widget. Damit kannst du auch CSS und JavaScript.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
spooky0815
User
Beiträge: 23
Registriert: Montag 27. Februar 2006, 19:24

hast du zufällig einen groben Programmrahmen mit so einem objekt für mich :)

Da ich bis jetzt noch wx-Neuling bin, tue ich mich relativ schwer :(

Vielen Dank,

Spooky
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

spooky0815 hat geschrieben:hast du zufällig einen groben Programmrahmen mit so einem objekt für mich
Hi Spooky!

Kannst du haben :-)

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import wx
from wx.lib import iewin


class IEBrowser(wx.Frame):
    """
    Einfacher Browser, der den Internet Explorer verwendet.
    """
    
    def __init__(
        self, parent = None, id = -1, title = "IE-Browser", size = (800, 600)
    ):
        """
        Initialisiert das Fenster
        
        :param parent: Parent des Frames
        :param id: ID des Frames
        :param title: Frame-Titel
        :param size: Größe des Fensters
        """
        
        # Frame initialisieren
        wx.Frame.__init__(self, parent, id, title = title, size = size)
        
        # vbox
        vbox = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(vbox)
        
        # Statusbar
        self.CreateStatusBar()
        
        # Panel
        panel = wx.Panel(self)
        vbox.Add(panel, 0, wx.EXPAND)
        
        # hbox
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        panel.SetSizer(hbox)
        
        # url-Control
        self.tc_url = wx.TextCtrl(panel, -1, "http://gerold.bcom.at")
        hbox.Add(self.tc_url, 1, wx.ALL, 5)
        
        # Submit-Button
        btn_submit = wx.Button(panel, -1, "Submit")
        hbox.Add(btn_submit, 0, wx.ALL, 5)
        btn_submit.Bind(wx.EVT_BUTTON, self.OnSubmit)
        
        # IEHtmlWindow
        self.ie = iewin.IEHtmlWindow(self)
        vbox.Add(self.ie, 1, wx.EXPAND)
        
        # Zentrieren und anzeigen
        if parent:
            self.CenterOnParent(parent)
        else:
            self.Center()
        self.Show()
    
    
    def OnSubmit(self, event):
        """
        Event-Handler für den "Submit-Button"
        """
        
        self.ie.LoadUrl(self.tc_url.GetValue())


def main():
    """
    Hauptprozedur
    """
    
    app = wx.PySimpleApp()
    browser = IEBrowser()
    app.MainLoop()


if __name__ == "__main__":
    main()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
spooky0815
User
Beiträge: 23
Registriert: Montag 27. Februar 2006, 19:24

Genial ... vielen Dank Gerold!!!!!!!

:shock:

Spooky
Antworten