我在 Python 中有一个简单的 Tkinter 应用程序。我想向它添加帮助文档;将帮助查看器集成到应用程序的最简单方法是什么?最好是跨平台的(虽然我主要使用 Windows)?
我可以想象用纯 HTML 编写帮助。
或者只是使用标准库中的webbrowser模块启动外部 Web 浏览器。
import webbrowser
webbrowser.open('/path/to/help/file.html')
要编写文档,请查看sphinx。
你可以坚持用 html 编写,然后使用类似这样的东西:Tkhtml可以很好地显示 html 并且相当轻量级。:)
这是python 包装器。我希望这有帮助。
我发现包 tkinterweb ( https://pypi.org/project/tkinterweb/ ) 提供了将显示 HTML 的 HtmlFrame。我想使用 markdown - Python-Markdown ( https://python-markdown.github.io/ ) 将 markdown 转换为 HTML,所以我都使用了。两者都是可安装的。
pip install markdown
pip install tkinterweb
这是一些示例代码:
import tkinter as tk
from tkinterweb import HtmlFrame
import markdown
import tempfile
root = tk.Tk()
frame = HtmlFrame(root, messages_enabled=False)
m_text = (
'Markdown sample (https://en.wikipedia.org/wiki/Markdown#Examples)\n'
'\n'
'Heading\n'
'=======\n'
'\n'
'Sub-heading\n'
'-----------\n'
'\n'
'# Alternative heading #\n'
'\n'
'Paragraphs are separated\n'
'by a blank line.\n'
'\n'
'Two spaces at the end of a line \n'
'produce a line break.\n'
'\n'
'Text attributes _italic_, **bold**, `monospace`.\n'
'\n'
'Horizontal rule:\n'
'\n'
'---\n'
'\n'
'Bullet lists nested within numbered list:\n'
'\n'
' 1. fruits\n'
' * apple\n'
' * banana\n'
' 2. vegetables\n'
' - carrot\n'
' - broccoli\n'
'\n'
'A [link](http://example.com).\n'
'\n'
'![Image](Icon-pictures.png "icon")\n'
'\n'
'> Markdown uses email-style\n'
'characters for blockquoting.\n'
'>\n'
'> Multiple paragraphs need to be prepended individually.\n'
'\n'
'Most inline <abbr title="Hypertext Markup Language">HTML</abbr> is supported.\n'
)
'''
# normally read the text from a file
with open('sample.md', 'r') as f:
m_text = f.read()
'''
m_html = markdown.markdown(m_text)
temp_html = tempfile.NamedTemporaryFile(mode='w')
f = open(temp_html.name, 'w')
f.write(m_html)
f.flush()
frame.load_file(f.name)
frame.pack(fill="both", expand=True)
root.mainloop()
如果您将生成的 HTMLmarkdown
与 Wikipedia 条目中的 HTML 进行比较,您会发现它做得很好。但是,HtmlFrame
并非如此,但对于基本文档来说可能已经足够了。
更新:我发现 tkinterweb 是基于 tkhtml 的,所以这个解决方案确实存在一些与这里发布的其他人相同的缺陷。