Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะแสดง LaTex แบบเรียลไทม์ในกล่องข้อความใน Tkinter ได้อย่างไร


ไลบรารี Python Matplotlib มีประโยชน์ในแอปพลิเคชันที่เราจำเป็นต้องแสดงจุดข้อมูลเป็นภาพและวาดกราฟและแปลงเพื่อวิเคราะห์ข้อมูล สมมติว่าเราต้องการสร้างแอปพลิเคชัน tkinter ซึ่งเราสามารถประมวลผลไวยากรณ์ LaTex ได้

ไวยากรณ์ LaTex ใช้สำหรับเตรียมเอกสารทางวิทยาศาสตร์ เช่น สูตร สัญลักษณ์ทางวิทยาศาสตร์ อักขระทางคณิตศาสตร์ และเครื่องหมายวรรคตอน เพื่อเตรียมใบสมัคร เราจำเป็นต้องใช้ matplotlib และ TkAgg (API แบ็กเอนด์สำหรับ Matplotlib ใน Tkinter) โมดูล ขั้นตอนต่อไปนี้ใช้เพื่อจัดโครงสร้างฟังก์ชันและวิดเจ็ตของแอปพลิเคชัน

  • นำเข้าไลบรารีที่จำเป็น เช่น Matplotlib, Tkinter, Ttk (สำหรับการจัดรูปแบบวิดเจ็ต), TkAgg เป็นต้น
  • เพิ่มเฟรมและกำหนดป้ายกำกับและวิดเจ็ตรายการ
  • กำหนดขนาดของรูปโดยใช้ figure() วิธีการใน Matplotlib สามารถใช้ตัวเลขนี้เพื่อพล็อตไวยากรณ์ในแคนวาสได้
  • ตอนนี้ สร้างวิดเจ็ต Canvas ซึ่งเราจะกำหนดตัวเลขของเราโดยใช้ TkAgg .
  • กำหนดฟังก์ชันเพื่อรับเนื้อหาของวิดเจ็ต Entry และแปลงข้อความในรูปโดยใช้ฟังก์ชันที่กำหนดไว้ล่วงหน้าใน Matplotlib นั่นคือ text() .
  • แสดงผลบนผืนผ้าใบหลังจากผูกเหตุการณ์ Return หรือ Click ด้วยฟังก์ชัน

ตัวอย่าง

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

ผลลัพธ์

การดำเนินการโค้ดข้างต้นจะแสดงหน้าต่างพร้อมวิดเจ็ตรายการและแผนภาพ ตอนนี้ พิมพ์นิพจน์ทางวิทยาศาสตร์เพื่อแสดงผลลัพธ์ในรูปแบบ LaTex

จะแสดง LaTex แบบเรียลไทม์ในกล่องข้อความใน Tkinter ได้อย่างไร