10

我需要一种简单的方法来呈现使用 Requests ( python-requests.org ) 检索到的 HTML 页面。我在 Windows 上使用 Python 3.2。

我正在使用 tkinter,我发现了一个名为 TkHtml 的 Tk 小部件。它在http://tkhtml.tcl.tk/中有描述, DLL 可以从http://www.hwaci.com/sw/tkhtml/下载。我在http://tix.sourceforge.net/Tixapps/src/Python/TkHtml.py找到了一个 python 包装器。

我不知道如何让 TkHtml 在 python 中工作。是否有一些处理 3rd 方 Tk 小部件的标准方法?

我将 tkhtml.dll 放在 Python32\DLLs 中(不知道这是否正确),并将 TkHtml.py 放在 Python32\Lib\site-packages 中。我继续并修复了 TkHtml.py 中的导入以使用 Python 3(将 tkFileDialog 更改为 tkinter.filedialog 并将 Tkinter 更改为 tkinter)。

当我做:

import TkHtml
app=TkHtml.TestApp()

我得到错误:

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

有任何想法吗?

4

3 回答 3

5

找到您的 Python tcl 目录,例如。C:\Python32\tcl 。这就是 tcl/tk 扩展的去处。

在那里创建一个名为 Tkhtml 的新文件夹。

将 (1) 您的 .dll 文件,(2) 一个名为 pkgIndex.tcl 的文本文件放入此文件夹

pkgIndex.tcl 包含这样的一行:

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

如果您可以在 python 提示符下执行此操作,

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

...然后包可用。该字符串'0.0'表示版本号。

于 2012-04-18T04:43:33.927 回答
5

我为 Tkhtml3 创建了一个 pip 可安装的 Python 包装器:https ://bitbucket.org/aivarannamaa/tkinterhtml

它带有适用于 Windows、Mac 和 Linux 的 TkHtml3 二进制文件。

于 2015-12-16T17:38:22.257 回答
2

我在 Windows 8(64 位)上使用 Python 3.3,并收到与 OP 相同的包加载错误。

我也已将文件下载并保存TkHtml .dll.py以下文件夹:

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

根据 noob oddy 的建议,我做了以下事情:

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

并将这一行:复制package ifneeded Tkhtml 0.0 [list load [file join $dir tkhtml.dll]]pkgIndex.tcl文件中。

最终对我有用的是把所有东西从一个文件夹移动Python3.3到另一个文件Python2夹。HTML 渲染器运行良好。似乎TkHtml与 Python 3 不兼容。

于 2013-10-20T02:21:01.087 回答