tkinter在指定位置内嵌动态变化曲线代码
时间: 2023-08-17 10:04:19 浏览: 86
可以使用matplotlib来绘制动态变化的曲线,并使用tkinter将其嵌入到指定位置。以下是一个示例代码:
```python
import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
class Graph:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.frame.pack()
# 创建一个matplotlib的Figure对象
self.fig = Figure(figsize=(5, 4), dpi=100)
self.axes = self.fig.add_subplot(111)
# 在图形中添加初始曲线
x = np.arange(0, 2*np.pi, 0.01)
y = np.sin(x)
self.line, = self.axes.plot(x, y)
# 创建一个matplotlib的Canvas对象
self.canvas = FigureCanvasTkAgg(self.fig, master=self.frame)
self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
# 创建一个按钮,用于更新曲线
self.button = tk.Button(self.frame, text="Update", command=self.update)
self.button.pack(side=tk.BOTTOM)
def update(self):
# 更新曲线
x = np.arange(0, 2*np.pi, 0.01)
y = np.sin(x + self.master.counter)
self.line.set_ydata(y)
self.canvas.draw()
class App:
def __init__(self, root):
self.root = root
self.root.title("Graph")
# 创建一个Graph对象,并将其嵌入到指定位置
self.graph = Graph(self.root)
self.graph.frame.place(x=50, y=50)
# 开始计数器
self.root.counter = 0
self.update_counter()
def update_counter(self):
# 更新计数器,并更新曲线
self.root.counter += 0.1
self.graph.update()
# 重复调用该函数
self.root.after(50, self.update_counter)
if __name__ == "__main__":
root = tk.Tk()
app = App(root)
root.mainloop()
```
这个示例代码中,我们创建了一个Graph类来绘制曲线,并将其嵌入到指定位置。在App类中,我们创建了一个计数器,每隔一段时间更新计数器,并更新曲线。通过重复调用`self.root.after()`函数,我们可以实现动态变化的曲线。
阅读全文