我需要一种简单的方法来呈现使用请求(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中运行。是否有一些处理第三方Tk小部件的标准方法?
我在Python32 \ DLL中放了tkhtml.dll(不知道这是不对的)并将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
有什么想法吗?
答案 0 :(得分:4)
找到你的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'
表示版本号。
答案 1 :(得分:4)
我为Tkhtml3创建了一个可以安装pip的Python包装器:https://bitbucket.org/aivarannamaa/tkinterhtml
它附带了适用于Windows,Mac和Linux的TkHtml3二进制文件。
答案 2 :(得分: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不兼容。