2012-04-14 13 views
8

Ich brauche eine einfache Möglichkeit zum Rendern von HTML-Seiten mit Requests (python-requests.org) abgerufen. Ich benutze Python 3.2 unter Windows.Einrichten von TkHtml (ein Tk-Widget) mit Python

Ich benutzte Tkinter, und ich fand ein Tk-Widget namens TkHtml. Es ist unter http://tkhtml.tcl.tk/ beschrieben und eine DLL kann von http://www.hwaci.com/sw/tkhtml/ heruntergeladen werden. Ich fand einen Python-Wrapper bei http://tix.sourceforge.net/Tixapps/src/Python/TkHtml.py.

Ich weiß nicht, wie man TkHtml in Python arbeiten. Gibt es eine Standardmethode für den Umgang mit Tk-Widgets von Drittanbietern?

Ich habe tkhtml.dll in Python32 \ DLLs (keine Ahnung, ob das richtig ist) und TkHtml.py in Python32 \ Lib \ site-packages. Ich ging voran und reparierte die Importe in TkHtml.py, um mit Python 3 zu arbeiten (änderte tkFileDialog zu tkinter.filedialog und Tkinter zu tkinter).

Wenn ich tun:

import TkHtml 
app=TkHtml.TestApp() 

ich den Fehler:

... 
File "C:\Program Files\Python32\lib\site-packages\TkHtml.py", line 45, in __init__ 
master.tk.call("package", "require", "tkhtml") 
_tkinter.TclError: can't find package tkhtml 

Irgendwelche Ideen?

Antwort

4

Finden Sie Ihr Python-tcl-Verzeichnis z. C: \ Python32 \ tcl. Dies ist, wo tcl/tk Erweiterungen gehen.

Erstellen Sie dort einen neuen Ordner namens Tkhtml.

in diesem Ordner ein (1) Ihre DLL-Datei, (2) eine Textdatei namens pkgIndex.tcl

pkgIndex.tcl enthält eine Zeile wie diese:

package ifneeded Tkhtml 0.0 [list load [file join $dir tkhtml.dll]] 

Wenn Sie tun können, dies an der Python-Eingabeaufforderung,

>>> import Tkinter #tkinter 
>>> root = Tkinter.Tk() 
>>> root.tk.eval('package require Tkhtml') 
'0.0' 

... dann ist das Paket verfügbar. Die Zeichenfolge steht für die Versionsnummer.

2

Ich benutze Python 3.3 auf Windows 8 (64-Bit) und erhielt den gleichen Paket laden Fehler wie das OP.

Ich hatte auch heruntergeladen und gespeichert TkHtml.dll und .py Dateien auf diese folgenden Ordner:

tkhtml.dll -> D:\Python3.3\DLL 
TkHtml.py -> D:\Python3.3\Lib\site-packages 

Basierend auf Vorschlag des Noob oddy, ich habe folgendes:

tkhtml.dll -> D:\Python3.3\tcl\Tkhtml 
pkgIndex.tcl -> D:\Python3.3\tcl\Tkhtml 

Und diese Zeile kopiert: package ifneeded Tkhtml 0.0 [list load [file join $dir tkhtml.dll]] in die pkgIndex.tcl Datei.

Was schließlich der Trick für mich war, bewegte alles von Python3.3 Ordner zu Python2 Ordner. Der HTML-Renderer hat wunderbar funktioniert. Es scheint, dass TkHtml nicht mit Python 3.