pysimplegui实时显示曲线图
时间: 2023-09-18 09:13:24 浏览: 127
要在PySimpleGUI中实时显示曲线图,可以使用Matplotlib库和PySimpleGUI的结合。
首先,需要安装Matplotlib库:
```
pip install matplotlib
```
然后,在PySimpleGUI窗口中添加一个Matplotlib绘图区域,代码如下:
```python
import PySimpleGUI as sg
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
# 创建一个Matplotlib绘图区域
fig, ax = plt.subplots()
# 使用PySimpleGUI创建一个布局
layout = [
[sg.Canvas(key='-CANVAS-')],
[sg.Button('Exit')]
]
# 创建PySimpleGUI窗口
window = sg.Window('Real-time Plot', layout)
# 绘制初始曲线
x_data = [0]
y_data = [0]
line, = ax.plot(x_data, y_data)
# 创建一个Matplotlib绘图画布并添加到窗口中
canvas = FigureCanvasTkAgg(fig, master=window['-CANVAS-'].TKCanvas)
canvas.draw()
canvas.get_tk_widget().pack(side='top', fill='both', expand=1)
while True:
event, values = window.read(timeout=0)
# 退出程序
if event == sg.WIN_CLOSED or event == 'Exit':
break
# 更新曲线数据
x_data.append(x_data[-1] + 1)
y_data.append(y_data[-1] + 1)
line.set_xdata(x_data)
line.set_ydata(y_data)
# 重新绘制曲线
ax.relim()
ax.autoscale_view(True,True,True)
canvas.draw()
# 关闭窗口和Matplotlib绘图区域
window.close()
plt.close(fig)
```
在这个代码中,我们创建了一个Matplotlib绘图区域和一个PySimpleGUI窗口。然后,我们使用`FigureCanvasTkAgg`类创建了一个Matplotlib绘图画布,并将其添加到窗口中的Canvas组件中。我们还绘制了一个初始曲线,并在无限循环中更新它。每次更新曲线数据时,我们使用`set_xdata`和`set_ydata`方法更新Matplotlib绘图区域中的曲线,然后重新绘制它。
最后,我们在退出程序前关闭窗口和Matplotlib绘图区域。
阅读全文