You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySimpleGUI能否通过update方法更新Canvas组件尺寸?

关于PySimpleGUI中sg.Canvas动态调整尺寸的问题

我开发了一个带有Canvas组件的GUI,用于绘制用户选择的变量。选择的变量越多,固定尺寸的Canvas上每个变量的图表就会被挤压得越小。

初始代码片段:

[sg.Column(layout=[
    [sg.Canvas(key='fig_p6', size=(15.2*hx , vsize*hy))]
]

我尝试通过以下代码调整尺寸:

vsize = no_of_selected_variables * 3
window['fig_p6'].update(size=(15.2, vsize))

请问是否可以通过这种方式更新sg.Canvas的尺寸?


可以通过这种方式更新sg.Canvas的尺寸,但有几个需要注意的细节:

  • sg.Canvas的update方法确实支持修改size参数,你的代码写法是有效的。但要注意尺寸单位——PySimpleGUI组件尺寸默认以字符数为单位,如果初始代码里的hx/hy是像素比例或其他单位,要保证前后单位一致,避免显示异常。
  • 如果Canvas所在的sg.Column没有设置足够的尺寸或开启滚动,调整Canvas尺寸后可能会被截断。建议给Column也设置动态尺寸或者开启滚动,示例:
    sg.Column(layout=[[sg.Canvas(key='fig_p6')]], size=(动态计算的宽度, 动态计算的高度), scrollable=True)
    
  • 要是你用Canvas嵌入了Matplotlib这类绘图库的图表,调整Canvas尺寸后,记得同步更新内部绘图对象的大小,否则图表不会自适应新的Canvas尺寸。

内容的提问来源于stack exchange,提问作者VicQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:10:32