2012-04-14 46 views
8

Tôi cần một cách đơn giản để hiển thị các trang HTML được truy xuất bằng Yêu cầu (python-requests.org). Tôi đang sử dụng Python 3.2 trên Windows.Thiết lập TkHtml (tiện ích Tk) bằng Python

Tôi đã sử dụng tkinter và tôi đã tìm thấy một tiện ích Tk có tên là TkHtml. Nó được mô tả tại http://tkhtml.tcl.tk/ và một DLL có thể tải xuống từ http://www.hwaci.com/sw/tkhtml/. Tôi tìm thấy một wrapper python tại http://tix.sourceforge.net/Tixapps/src/Python/TkHtml.py.

Tôi không biết làm thế nào để TkHtml hoạt động trong python. Có cách nào tiêu chuẩn để xử lý các tiện ích Tk của bên thứ 3 không?

Tôi đặt tkhtml.dll trong Python32 \ DLLs (không có ý tưởng nếu điều này là đúng) và đặt TkHtml.py trong Python32 \ Lib \ site-packages. Tôi đã đi trước và sửa nhập khẩu trong TkHtml.py để làm việc với Python 3 (đã thay đổi tkFileDialog thành tkinter.filedialog và Tkinter thành tkinter).

Khi tôi làm:

import TkHtml 
app=TkHtml.TestApp() 

tôi nhận được lỗi:

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

Bất kỳ ý tưởng?

Trả lời

4

Tìm thư mục tcl Python của bạn, ví dụ: C: \ Python32 \ tcl. Đây là nơi mở rộng tcl/tk.

Tạo thư mục mới có tên Tkhtml.

Into thư mục này đặt (1) tập tin .dll của bạn, (2) một file văn bản được gọi là pkgIndex.tcl

pkgIndex.tcl chứa một dòng như thế này:

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

Nếu bạn có thể làm tại dấu nhắc python,

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

... khi đó gói có sẵn. Chuỗi '0.0' đại diện cho số phiên bản.

2

Tôi đang sử dụng Python 3.3 trên Windows 8 (64 bit) và nhận được lỗi tải gói giống như OP.

tôi cũng đã tải về và lưu TkHtml.dll.py tập tin vào các thư mục sau:

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

Dựa trên đề nghị Noob Oddy, tôi đã làm như sau:

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

Và copy dòng này: package ifneeded Tkhtml 0.0 [list load [file join $dir tkhtml.dll]] vào tệp pkgIndex.tcl.

Điều gì cuối cùng đã làm cho các trick cho tôi đã di chuyển tất cả mọi thứ từ Python3.3 thư mục để Python2 thư mục. Trình kết xuất HTML hoạt động tốt. Dường như TkHtml là không tương thích với Python 3.

Các vấn đề liên quan