Tkinter справка зрителя

У меня есть простое приложение Tkinter в Python. Я хотел бы добавить справочный документ к нему; Как проще всего интегрировать средство просмотра справки в приложение? Желательно кроссплатформенный (хотя я в основном использую Windows)?

Я могу представить, как написать помощь в простом HTML.

3 ответа

Решение

Или просто запустите внешний веб-браузер, используя модуль веб-браузера из стандартной библиотеки.

import webbrowser
webbrowser.open('/path/to/help/file.html')

Для написания своей документации взгляните на сфинкса.

Вы можете продолжать писать в html, а затем использовать что-то вроде этого: Tkhtml, который отображает html довольно хорошо и довольно легкий.:)

А вот и оболочка для Python. Надеюсь, это поможет.

Я обнаружил, что пакет tkinterweb (https://pypi.org/project/tkinterweb/) предоставляет HtmlFrame, который будет отображать HTML. Я хотел использовать уценку — Python-Markdown (https://python-markdown.github.io/) преобразует уценку в HTML, поэтому я использовал оба варианта. Оба являются pip-установочными.

      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()

Если вы сравните сгенерированный HTML из markdownс этим в записи Википедии вы можете видеть, что он отлично справляется со своей задачей. Однако, HtmlFrameне так, но, вероятно, достаточно для базовой документации.

Обновление : я обнаружил, что tkinterweb основан на tkhtml, поэтому это решение имеет некоторые из тех же недостатков, что и другие, опубликованные здесь.

Другие вопросы по тегам