Thư viện Python Matplotlib hữu ích trong ứng dụng cần trực quan hóa dữ liệu, vẽ đồ thị và biểu đồ để phân tích dữ liệu. Giả sử chúng ta muốn tạo ứng dụng tkinter xử lý cú pháp LaTex.
Cú pháp LaTex 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 câu. Để xây dựng ứng dụng, cần dùng mô-đun matplotlib và TkAgg (backend API cho Matplotlib trong Tkinter). Các bước sau cấu trúc hàm và widget của ứng dụng:
- Import thư viện: Matplotlib, Tkinter, Ttk (tạo kiểu widget), TkAgg, v.v.
- Thêm Frame và định nghĩa Label, Entry widget trong đó.
- Định nghĩa kích thước Figure bằng phương thức figure() trong Matplotlib. Figure này dùng để vẽ cú pháp trên canvas.
- Tạo widget Canvas để định nghĩa figure bằng TkAgg.
- Định nghĩa hàm lấy nội dung Entry và chuyển văn bản thành figure bằng hàm định sẵn trong Matplotlib, tức text().
- Hiển thị kết quả trên canvas sau khi gán sự kiện Return hoặc Click với hàm.
Ví dụ
# Import thư viện cần thiết
from tkinter import *
from tkinter import ttk
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
# Sử dụng TkAgg trong backend của ứng dụng tkinter
matplotlib.use('TkAgg')
# Tạo instance của frame tkinter
win = Tk()
# Đặt kích thước cửa sổ
win.geometry("700x350")
# Đặt tiêu đề cửa sổ
win.title("LaTex Viewer")
# Định nghĩa hàm lấy đầu ra figure
def graph(text):
# Lấy input Entry
tmptext = entry.get()
tmptext = "$" + tmptext + "$"
# Xóa cú pháp trước đó khỏi figure
wx.clear()
wx.text(0.2, 0.6, tmptext, fontsize=20)
canvas.draw()
# Tạo đối tượng Frame
frame = Frame(win)
frame.pack()
# Tạo widget Entry
var = StringVar()
entry = Entry(frame, width=70, textvariable=var)
entry.pack()
# Thêm widget label trong frame
label = Label(frame)
label.pack()
# Định nghĩa kích thước figure và vẽ 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)
# Đặt khả năng hiển thị của figure Canvas
wx.get_xaxis().set_visible(False)
wx.get_yaxis().set_visible(False)
win.bind('', graph)
win.mainloop()
Kết quả
Chạy mã trên sẽ hiển thị cửa sổ với widget Entry và biểu đồ figure. Gõ biểu thức khoa học để xem kết quả ở định dạng LaTex.
