Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để hiển thị LaTex trong thời gian thực trong một hộp văn bản trong Tkinter?

Thư viện Python Matplotlib rất hữu ích trong các ứng dụng mà chúng ta cần trực quan hóa các điểm dữ liệu và vẽ biểu đồ và biểu đồ để phân tích dữ liệu. Giả sử chúng tôi muốn tạo một ứng dụng tkinter nơi chúng tôi có thể xử lý cú pháp LaTex.

Cú pháp LaTex được sử dụng để chuẩn bị tài liệu khoa học như, công thức, ký hiệu khoa học, ký tự toán học và dấu chấm câu. Để chuẩn bị đơn đăng ký, chúng tôi bắt buộc phải sử dụng matplotlib TkAgg (API phụ trợ cho Matplotlib trong Tkinter) các mô-đun. Các bước sau được sử dụng để cấu trúc các chức năng và tiện ích ứng dụng,

  • Nhập các thư viện bắt buộc như Matplotlib, Tkinter, Ttk (để tạo kiểu cho widget), TkAgg, v.v.
  • Thêm Khung và xác định nhãn cũng như tiện ích Mục nhập trong đó.
  • Xác định kích thước của Hình bằng cách sử dụng figure () trong Matplotlib. Hình này có thể được sử dụng để vẽ cú pháp trong canvas.
  • Bây giờ, hãy tạo một tiện ích Canvas nơi chúng tôi sẽ xác định hình vẽ của mình bằng cách sử dụng TkAgg .
  • Xác định một hàm để lấy nội dung của tiện ích Entry và chuyển đổi văn bản trong một hình bằng cách sử dụng hàm được xác định trước trong Matplotlib, tức là text () .
  • Hiển thị kết quả đầu ra trên canvas sau khi liên kết sự kiện Quay lại hoặc Nhấp với chức năng.

Ví dụ

# Import required libraries
from tkinter import *
from tkinter import ttk
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

# Use TkAgg in the backend of tkinter application
matplotlib.use('TkAgg')

# Create an instance of tkinter frame
win = Tk()

# Set the size of the window
win.geometry("700x350")

# Set the title of the window
win.title("LaTex Viewer")

# Define a function to get the figure output
def graph(text):
   # Get the Entry Input
   tmptext = entry.get()
   tmptext = "$"+tmptext+"$"
   # Clear any previous Syntax from the figure
   wx.clear()
   wx.text(0.2, 0.6, tmptext, fontsize = 20)
   canvas.draw()
# Create a Frame object
frame = Frame(win)
frame.pack()
# Create an Entry widget
var = StringVar()
entry = Entry(frame, width=70, textvariable=var)
entry.pack()

# Add a label widget in the frame
label = Label(frame)
label.pack()

# Define the figure size and plot the figure
fig = matplotlib.figure.Figure(figsize=(7, 4), dpi=100)
wx = fig.add_subplot(111)
canvas = FigureCanvasTkAgg(fig, master=label)
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)

# Set the visibility of the Canvas figure
wx.get_xaxis().set_visible(False)
wx.get_yaxis().set_visible(False)

win.bind('<Return>', graph)
win.mainloop()

Đầu ra

Thực hiện đoạn mã trên sẽ hiển thị một cửa sổ có tiện ích Entry và một biểu đồ hình. Bây giờ, hãy nhập một số biểu thức khoa học để hiển thị kết quả đầu ra ở định dạng LaTex.

Làm thế nào để hiển thị LaTex trong thời gian thực trong một hộp văn bản trong Tkinter?