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
相关产品推荐
相关产品推荐

