'Window' object has no attribute 'set_size'?
时间: 2023-06-22 19:35:21 浏览: 139
一个窗口size不变的问题
如果你的PySimpleGUI版本较早,那么它可能不支持`set_size`方法。在这种情况下,你可以尝试使用`finalize`方法来在创建窗口后设置窗口大小。
修改代码如下:
```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, finalize=True) # 设置finalize=True
window.set_size((800, 600)) # 设置窗口大小
# 定义绘图函数
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()
```
在代码中加入了一行`finalize=True`,并且将设置窗口大小的代码移动到了创建窗口后。这样做可以确保窗口创建完成后再设置窗口大小。
阅读全文