导入所需的模块

from tkinter import * from tkinter import messagebox import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import math

定义一次函数类

class Ychs: def init(self, master): self.master = master master.title("绘制一次函数")

    # 添加标签
    self.label0 = Label(master, text="形如 f(x) = ax + b 的函数",font=21)
    self.label0.pack()

    # 添加斜率和截距的输入标签和输入框
    self.label1 = Label(master, text="请输入斜率a的值:")
    self.label1.pack()
    self.entry1 = Entry(master)
    self.entry1.pack()

    self.label2 = Label(master, text="请输入截距b的值:")
    self.label2.pack()
    self.entry2 = Entry(master)
    self.entry2.pack()

    # 添加绘制按钮
    self.plot_button = Button(master, text="绘制", command=self.plot)
    self.plot_button.pack()

    # 添加画布
    self.fig = plt.Figure(figsize=(5, 4), dpi=100)
    self.canvas = FigureCanvasTkAgg(self.fig, master=self.master)
    self.canvas.get_tk_widget().pack(side=BOTTOM, fill=BOTH, expand=True)


def plot(self):
    # 获取输入的斜率和截距的值
    slope = float(self.entry1.get())
    y_intercept = float(self.entry2.get())

    # 设置x轴的范围为-10到10
    x_vals = range(-10, 11)
    # 根据一次函数公式计算y轴的值
    y_vals = [slope*x + y_intercept for x in x_vals]

    # 清空原有图像
    self.fig.clear()

    # 添加子图并绘制图像
    ax = self.fig.add_subplot(111)
    ax.plot(x_vals, y_vals)

    # 刷新画布
    self.canvas.draw()

定义二次函数类

class Echs: def init(self, master): self.master = master master.title("绘制二次图像")

    # 添加标签
    self.label0 = Label(master, text="形如 f(x) = ax^2 + bx + c 的函数", font=21)
    self.label0.pack()
    
    # 添加a,b,c的输入标签和输入框
    self.label1 = Label(master, text="请输入a的值:")
    self.label1.pack()
    
    self.entry1 = Entry(master)
    self.entry1.pack()

    self.label2 = Label(master, text="请输入b的值:")
    self.label2.pack()
    
    self.entry2 = Entry(master)
    self.entry2.pack()

    self.label3 = Label(master, text="请输入c的值:")
    self.label3.pack()
    
    self.entry3 = Entry(master)
    self.entry3.pack()

    # 添加绘制按钮
    self.plot_button = Button(master, text="绘制图像", command=self.plot)
    self.plot_button.pack()

    # 添加画布
    self.fig = plt.Figure(figsize=(5, 4), dpi=100)
    self.canvas = FigureCanvasTkAgg(self.fig, master=self.master)
    self.canvas.get_tk_widget().pack(side=BOTTOM, fill=BOTH, expand=True)

def plot(self):
    # 获取输入的a,b,c的值
    a = float(self.entry1.get())
    b = float(self.entry2.get())
    c = float(self.entry3.get())

    # 设置x轴的范围为-10到10
    x_vals = range(-10, 11)
    # 根据二次函数公式计算y轴的值
    y_vals = [a*x**2 + b*x + c for x in x_vals]

    # 清空原有图像
    self.fig.clear()

    # 添加子图并绘制图像
    ax = self.fig.add_subplot(111)
    ax.plot(x_vals, y_vals)

    # 刷新画布
    self.canvas.draw()

定义反比例函数类

class Fblhs: def init(self, master): self.master = master master.title("绘制反比例函数图像")

    # 添加标签
    self.label0 = Label(master, text="形如 f(x) = a/x 的函数", font=21)
    self.label0.pack()
    
    # 添加a的输入标签和输入框
    self.label1 = Label(master, text="请输入a的值")
    self.label1.pack()

    self.entry1 = Entry(master)
    self.entry1.pack()

    # 添加绘制按钮
    self.plot_button = Button(master, text="绘制图像", command=self.plot)
    self.plot_button.pack()

    # 添加画布
    self.fig = plt.Figure(figsize=(5, 4), dpi=100)
    self.canvas = FigureCanvasTkAgg(self.fig, master=self.master)
    self.canvas.get_tk_widget().pack(side=BOTTOM, fill=BOTH, expand=True)

def plot(self):
    # 获取输入的a的值
    k = float(self.entry1.get())

    # 设置x轴的范围为-10到10
    x_vals = range(-10, 11)
    # 根据反比例函数公式计算y轴的值
    y_vals = [k/x if x != 0 else None for x in x_vals]

    # 清空原有图像
    self.fig.clear()

    # 添加子图并绘制图像
    ax = self.fig.add_subplot(111)
    ax.plot(x_vals, y_vals)

    # 添加坐标轴
    ax.axhline(y=0, color='black')
    ax.axvline(x=0, color='black')

    # 刷新画布
    self.canvas.draw()

定义函数图像绘制类

class FunctionPlot: def init(self): root = Tk() root.geometry("400x200+300+200") root.title("函数图像绘制")

    # 添加选择函数种类的标签和按钮
    lab01 = Label(root, text="请选择需要绘制图像的函数种类:")
    lab01.pack()

    btn01 = Button(root, text="一次函数", command=self.ychs)
    btn01.pack()

    btn02 = Button(root, text="二次函数", command=self.echs)
    btn02.pack()

    btn03 = Button(root, text="反比例函数", command=self.fblhs)
    btn03.pack()

    # 添加退出按钮
    btnquit = Button(root, text="退出", command=quit)
    btnquit.pack()

    root.mainloop()

# 创建一次函数对象
def ychs(self):
    ret01 = Tk()
    fun = Ychs(ret01)

# 创建二次函数对象
def echs(self):
    ret02 = Tk()
    fun = Echs(ret02)

# 创建反比例函数对象
def fblhs(self):
    ret03 = Tk()
    fun = Fblhs(ret03)

创建函数图像绘制对象

FunctionPlot(

帮我给下面这段代码添加中文注释from tkinter import from tkinter import messageboximport matplotlibpyplot as pltfrom matplotlibbackendsbackend_tkagg import FigureCanvasTkAggimport mathclass Ychs def __init__self ma

原文地址: https://www.cveoy.top/t/topic/fa7g 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录