PySimpleGUI 集成的matplotlib怎么更新
时间: 2023-10-16 12:21:04 浏览: 95
利用matplotlib实现根据实时数据动态更新图形
要更新 PySimpleGUI 中集成的 matplotlib 图表,可以使用 `FigureCanvasTkAgg` 对象的 `draw()` 方法来重新绘制图表。具体步骤如下:
1. 定义一个函数来更新图表,该函数应接受一个 matplotlib 的 `Figure` 对象和一个 `FigureCanvasTkAgg` 对象,然后使用 `Figure` 对象中的数据重新绘制图表。
```python
def update_figure(figure, canvas):
# 重新绘制图表
# 使用 figure 中的数据更新图表
canvas.draw()
```
2. 在 PySimpleGUI 的 GUI 中添加一个按钮或其他控件,当用户点击按钮时,调用上述函数。
```python
import PySimpleGUI as sg
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
# 创建图表
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])
# 创建 FigureCanvasTkAgg 对象
canvas = FigureCanvasTkAgg(fig, master)
# 将 FigureCanvasTkAgg 对象添加到 PySimpleGUI 窗口中
layout = [[sg.Canvas(key='canvas')], [sg.Button('Update')]]
window = sg.Window('Title', layout).Finalize()
canvas_widget = window['canvas'].TKCanvas
canvas.get_tk_widget().pack(fill='both', expand=True)
# 定义更新函数
def update_figure(figure, canvas):
# 重新绘制图表
# 使用 figure 中的数据更新图表
canvas.draw()
# 为按钮添加回调函数
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == 'Update':
update_figure(fig, canvas)
```
以上代码中,`update_figure()` 函数接受 `Figure` 对象和 `FigureCanvasTkAgg` 对象作为参数,并使用 `canvas.draw()` 方法重新绘制图表。当用户点击 PySimpleGUI 窗口中的 "Update" 按钮时,调用 `update_figure()` 函数以更新图表。
阅读全文