Удаление пробелов в виджете Tkinter с вложенным выражением .tex - PullRequest
1 голос
/ 02 марта 2020

Я создаю приложение, которое генерирует математические выражения, отображает их и позволяет проверить, правильно ли студент упростил его. Я попробовал sympy.preview в качестве подхода, но он не был удовлетворительным из-за необходимости установки латекса. Вот почему я решил использовать matplotlib.backends. backend_tkagg.FigureCanvasTkAgg в качестве опции.

В данный момент я пытаюсь создать виджет tkinter с выражением, отображаемым сверху, и вызываю grid() метод для него следующим образом:

from matplotlib import use
use('TkAgg')
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from tkinter import Tk

root = Tk()
fig = Figure(figsize=(5, 1), dpi=50)
ax = fig.gca()

ax.text(0.0, 0.0, "$" + r'x\sqrt{\frac{3}{4}}' + "$", fontsize=40, bbox=dict(facecolor='red', alpha=0.5))
ax.axis('off')
ax.get_xaxis().set_visible(True)
ax.get_yaxis().set_visible(True)

canvas = FigureCanvasTkAgg(fig, master=root)
canvas_widget = canvas.get_tk_widget()
canvas_widget.grid(row=1, column=1, columnspan=3, sticky="nesw")
canvas.draw()

root.mainloop()

enter image description here

Есть две проблемы:

  1. Выражение не отображается слева, оставляя некоторый пробел.
  2. Выражение не помещается в виджет

Мой желаемый результат:

enter image description here

Я пытался изменить положение figsize и ax.text, но не смог найти шаблон, который делает положение изображения стабильным. Заранее спасибо за помощь.

Обновление: К счастью, мне удалось найти простое решение. Не знаю почему, но вставка fig.tight_layout(pad=0) до canvas.draw() решает все.

...