2012-04-14 19 views
8

Necesito una forma sencilla de mostrar páginas HTML recuperadas con Solicitudes (python-requests.org). Estoy usando Python 3.2 en Windows.Configuración de TkHtml (un widget Tk) con Python

Estaba usando tkinter, y encontré un widget Tk llamado TkHtml. Se describe en http://tkhtml.tcl.tk/ y se puede descargar una DLL desde http://www.hwaci.com/sw/tkhtml/. Encontré un contenedor de Python en http://tix.sourceforge.net/Tixapps/src/Python/TkHtml.py.

No sé cómo hacer que TkHtml funcione en python. ¿Hay alguna forma estándar de manejar widgets Tk de terceros?

Puse tkhtml.dll en Python32 \ DLLs (no sé si esto es correcto) y puse TkHtml.py en Python32 \ Lib \ site-packages. Seguí adelante y arreglé las importaciones en TkHtml.py para trabajar con Python 3 (cambié tkFileDialog a tkinter.filedialog y Tkinter a tkinter).

Cuando hago:

import TkHtml 
app=TkHtml.TestApp() 

me sale el error:

... 
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 

¿Alguna idea?

Respuesta

4

Encuentra tu directorio Python tcl, por ejemplo. C: \ Python32 \ tcl. Aquí es donde van las extensiones tcl/tk.

Crea una nueva carpeta llamada Tkhtml.

poner en esta carpeta (1) su archivo .dll, (2) un archivo de texto llamado pkgIndex.tcl

pkgIndex.tcl contiene una línea como esta:

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

Si usted puede hacer esto en el indicador de Python,

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

... entonces el paquete está disponible. La cadena '0.0' representa el número de versión.

2

Estoy usando Python 3.3 en Windows 8 (64 bits) y recibí el mismo error de carga del paquete que el OP.

yo también había descargado y guardado TkHtml.dll y .py archivos de estas carpetas siguientes:

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

Sobre la base de la sugerencia novato de oddy, hice lo siguiente:

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

Y copiado esta línea: package ifneeded Tkhtml 0.0 [list load [file join $dir tkhtml.dll]] en el archivo pkgIndex.tcl.

Lo que finalmente me pasó fue mover todo de la carpeta Python3.3 a la carpeta . El renderizador HTML funcionó maravillosamente. Parece que no se TkHtml ser compatible con Python 3.

Cuestiones relacionadas