2012-04-14 165 views
8

我需要一個簡單的方法來呈現用請求(python-requests.org)檢索到的HTML頁面。我在Windows上使用Python 3.2。用Python設置TkHtml(一個Tk控件)

我正在使用tkinter,並且我找到了一個名爲TkHtml的Tk小部件。它在http://tkhtml.tcl.tk/中描述,並且可從http://www.hwaci.com/sw/tkhtml/下載DLL。我在http://tix.sourceforge.net/Tixapps/src/Python/TkHtml.py找到了一個python包裝器。

我不知道如何獲得TkHtml在python中的工作。有沒有處理第三方Tk小部件的標準方式?

我把tkhtml.dll放在Python32 \ 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 

任何想法?

回答

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'代表版本號。

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 

基於小白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是不是我創造了Tkhtml3畫中畫安裝的Python包裝的Python 3

相關問題