PySimpleGUI跟matplotlib画动态图代码?
时间: 2023-07-03 18:31:52 浏览: 162
当使用PySimpleGUI创建GUI并且需要显示动态图时,可以使用matplotlib来绘制动态图,然后将图像作为PySimpleGUI的图像元素显示在GUI中。
下面是一个示例代码,演示如何使用PySimpleGUI和matplotlib创建动态图的GUI:
```python
import PySimpleGUI as sg
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
# 创建GUI布局
layout = [[sg.Graph((0, 0), (100, 100), (0, 100), key='graph')],
[sg.Button('Start'), sg.Button('Stop'), sg.Button('Exit')]]
# 创建GUI窗口
window = sg.Window('动态图', layout)
# 定义绘图函数
def update_graph(frame_number, graph):
graph.erase()
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x + frame_number/10.0)
graph.draw_line(tuple(zip(x*10, y*10)))
# 创建动态图
fig, ax = plt.subplots()
graph = ax.plot([],[])[0]
ani = animation.FuncAnimation(fig, update_graph, fargs=(graph,), interval=50)
# GUI事件循环
while True:
event, values = window.read(timeout=20)
if event == 'Exit' or event == sg.WIN_CLOSED:
break
elif event == 'Start':
ani.event_source.start()
elif event == 'Stop':
ani.event_source.stop()
# 关闭GUI窗口和动态图
window.close()
plt.close()
```
这个示例程序创建了一个包含一个Graph元素和三个按钮的GUI窗口。Graph元素用于显示动态图,Start和Stop按钮控制动态图的开始和停止。动态图是通过matplotlib绘制的,update_graph函数在每一帧更新图形。最后,程序通过事件循环响应GUI事件,当点击Exit按钮或关闭窗口时,程序退出并关闭GUI窗口和动态图。
阅读全文