0
1

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】TkinterでLaTeXをレンダリングする

Last updated at Posted at 2024-04-20

はじめに

matplotlibを使ってtkinterにLaTeXをレンダリングする方法を紹介します。

この記事の対象者

  • ある程度Pythonの知識があり、tkinterにLaTeXをレンダリングしたい。

前提知識

  • 基本的なPythonの記法と仕様を理解している
  • tkinterの基本的な使い方を知っている

実装

実際のコード

main.py
import tkinter as tk

import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

matplotlib.use('TkAgg')
root = tk.Tk()

fig = Figure(figsize=(5, 4), dpi=100)
ax = fig.add_subplot(111)
ax.text(0.5, 0.5, r'$x^2$', fontsize=50, horizontalalignment='center', verticalalignment='center')
ax.set_axis_off()

canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack()

root.mainloop()

解説

import tkinter as tk

import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

必要なライブラリをインポートします。tkinterはウィンドウの作成、matplotlibはLaTeXのレンダリングに使います。

matplotlib.use('TkAgg')

matplotlibでtkinterのバックエンドを使用するように設定しています。

root = tk.Tk()

tkinterの親ウィンドウ(ルートウィンドウ)を作成しています。ルートウィンドウは他のウィジェットを配置する基礎となります。

fig = Figure(figsize=(5, 4), dpi=100)

matplotlibのFigureオブジェクトを作成しています。figsizeはFigureの大きさ(インチ)を指定し、dpiは解像度(ドット/インチ)を指定しています。

ax = fig.add_subplot(111)

Figureオブジェクトに1つのサブプロットを追加しています。add_subplot(111)は1行1列のサブプロットレイアウトで最初(唯一)のサブプロットを作成することを意味します。

ax.text(0.5, 0.5, r'$x^2$', fontsize=50, horizontalalignment='center', verticalalignment='center')

サブプロットの中央に"$x^2$"($x^2$)という数式を描画します。この文字列を変えることで任意の数式を描画できます。
text()関数は特定の位置にテキストを配置するために使用されます。fontsizeでテキストのサイズを指定します。horizontalalignmentverticalalignmentはテキストの水平方向と垂直方向の配置を指定します。

ax.set_axis_off()

サブプロットの軸(x軸とy軸)を非表示にします。

canvas = FigureCanvasTkAgg(fig, master=root)

matplotlibのFigureオブジェクトをtkinterのCanvasウィジェットにマッピングするためのFigureCanvasTkAggオブジェクトを作成します。master=rootはこのキャンバスがルートウィンドウに配置されることを意味します。

canvas.draw()

作成したFigureCanvasTkAggオブジェクトにグラフの描画を行います。

canvas.get_tk_widget().pack()

tkinterのCanvasウィジェットをルートウィンドウに配置します。pack()はウィジェットをウィンドウに配置するための関数です。代わりにgrid()place()を使って配置することもできます。

root.mainloop()

Tkinter のメインループを開始します。これによってウィンドウが表示されます。

終わりに

最後まで読んで頂きありがとうございます。不備があれば是非コメントで指摘して下さい。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?