我正在尝试制作一个应用程序,该应用程序自动安装 pypi 包,该应用程序使用 urlopen
解析了从网站中选择的用户。我设法获取 html,解码并将其提供给 TkinterHtml 小部件。但是,它会使用 APPCRASH
使 python 解释器崩溃。所以我将检索到的 url 替换为更简单的 html 文本。但是,这次它不会将图像渲染到小部件上(非图像标签像 p 一样工作正常)。我曾尝试阅读 tcl 版本的文档,但无法将其应用于 python。
我从 here 安装了 tkinterhtml 。
from urllib.request import urlopen
try:
import tkinter as tk
from tkinter import ttk
except ImportError:
import Tkinter as tk
import ttk
from tkinterhtml import TkinterHtml
root = tk.Tk()
html = TkinterHtml(root, fontscale=0.8)
vsb = ttk.Scrollbar(root, orient=tk.VERTICAL, command=html.yview)
hsb = ttk.Scrollbar(root, orient=tk.HORIZONTAL, command=html.xview)
html.configure(yscrollcommand=vsb.set)
html.configure(xscrollcommand=hsb.set)
#html.tag("configure", "selection", "-background", "black")
html.grid(row=0, column=0, sticky=tk.NSEW)
vsb.grid(row=0, column=1, sticky=tk.NSEW)
hsb.grid(row=1, column=0, sticky=tk.NSEW)
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
#data = urlopen("http://www.wikipedia.org").read().decode()
#html.parse(data)
html.parse("""
<html>
<body>
<h1>Hello world!</h1>
<p>First para</p>
<ul>
<li>first list item</li>
<li>second list item</li>
<img src="http://upload.wikimedia.org/wikipedia/en/3/38/Google_App_Engine_Logo.png"></img>
</ul>
</body>
</html>
""")
root.mainloop()
最佳答案
您需要一个函数来检索图像并创建一个 Tk 对象。这似乎对我有用,
from PIL import Image, ImageTk
import io
# needed to hold references
images = {}
def test(url):
fp = urlopen(url)
data = fp.read()
fp.close()
image = Image.open(io.BytesIO(data))
photo = ImageTk.PhotoImage(image)
images[url] = photo
return photo
root = tk.Tk()
# define imagecmd callback imagecmd=test in order to handle the images
html = TkinterHtml(root, fontscale=0.8, imagecmd=test)
tkhtml documentation(TkInterHtml 是 tkhtml3 的包装器)指出
关于python - Tkinter TkinterHtml 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35593028/