0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルでマークダウン記法の文章を簡単にプレビューするアプリPython で作成したい。

Last updated at Posted at 2025-02-07

背景

よくGenerative AIにマークダウン記法で出力してもらうのですが、すぐにそれをビューするものが無いので作成しました。

ウェブにはアプリあるのですが、流出リスクがあるのでPythonを用いて簡易的なビューアプリを作りました。
今回はその備忘録と同じ悩みを持つ方がいたらと思いシェアです。

image.png

機能概要

このアプリケーションは、ユーザーが入力したMarkdown形式のテキストをリアルタイムでHTMLに変換し、同一ウィンドウ内でプレビューを表示するPython製のGUIツールです。主な機能は以下の通りです:

  • 入力フィールド:Markdown形式のテキストを入力するエリア。
  • プレビューボタン:クリックすると、入力されたMarkdownをHTMLに変換し、プレビューを表示。
  • プレビューペイン:変換されたHTMLを表示するエリア。
  • ウィンドウサイズ:ウィンドウのサイズを自由に変更可能。
  • 最大化ボタン:ウィンドウを最大化するボタン。

フォルダ構成

以下のようなディレクトリ構成を採用します:

markdown_previewer/
├── main.py
├── requirements.txt
└── README.md
  • main.py:アプリケーションのメインコード。
  • requirements.txt:必要なPythonパッケージを記載したファイル。
  • README.md:プロジェクトの概要や使い方を記載したファイル。

各ファイルの内容

requirements.txt

markdown
tkhtmlview
  • markdown:MarkdownをHTMLに変換するためのライブラリ。
  • tkhtmlview:TkinterでHTMLを表示するためのライブラリ。

main.py

import tkinter as tk
from tkinter import ttk
import markdown
from tkhtmlview import HTMLLabel

def preview_markdown():
    markdown_text = text_input.get("1.0", tk.END)
    html = markdown.markdown(markdown_text)
    preview_label.set_html(html)

def toggle_maximize():
    if root.state() == 'normal':
        root.state('zoomed')  # 最大化
    else:
        root.state('normal')  # 通常サイズ

root = tk.Tk()
root.title("Markdown Previewer")
root.geometry("1280x720")  # 初期ウィンドウサイズ
root.resizable(True, True)  # サイズ変更を可能にする

notebook = ttk.Notebook(root)
notebook.pack(fill="both", expand=True)

input_frame = ttk.Frame(notebook)
preview_frame = ttk.Frame(notebook)
notebook.add(input_frame, text="Input")
notebook.add(preview_frame, text="Preview")

text_input = tk.Text(input_frame, wrap=tk.WORD)
text_input.pack(fill="both", expand=True, padx=10, pady=10)
preview_button = ttk.Button(input_frame, text="Preview", command=preview_markdown)
preview_button.pack(pady=10)
maximize_button = ttk.Button(input_frame, text="Maximize", command=toggle_maximize)
maximize_button.pack(pady=10)

preview_label = HTMLLabel(preview_frame)
preview_label.pack(fill="both", expand=True, padx=10, pady=10)

root.mainloop()

README.md

# Markdown Previewer

このアプリケーションは、ユーザーが入力したMarkdown形式のテキストをリアルタイムでHTMLに変換し、同一ウィンドウ内でプレビューを表示するPython製のGUIツールです。

## 必要なパッケージ

- `markdown`:MarkdownをHTMLに変換するためのライブラリ。
- `tkhtmlview`:TkinterでHTMLを表示するためのライブラリ。

## インストール方法

以下のコマンドで必要なパッケージをインストールしてください:
pip install -r requirements.txt


## 使い方

1. `main.py`を実行します。
2. 「Input」タブでMarkdown形式のテキストを入力します。
3. 「Preview」タブで変換されたHTMLのプレビューを確認します。
4. 「Maximize」ボタンでウィンドウを最大化できます。

使い方

  1. 必要なパッケージのインストールrequirements.txtに記載されたパッケージをインストールします。

    pip install -r requirements.txt
    
  2. アプリケーションの起動main.pyを実行します。

    python main.py
    

image.png

  1. Markdownの入力:「Input」タブでMarkdown形式のテキストを入力します。

image.png

  1. プレビューの確認:「Preview」タブで変換されたHTMLのプレビューを確認します。

image.png

  1. ウィンドウの操作:「Maximize」ボタンでウィンドウを最大化できます。

image.png

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?