如何在PySimpleGui中更新Column内按钮的关联图片?
解决PySimpleGUI Column组件内元素的访问问题
核心方案
PySimpleGUI中,所有带key的元素(包括嵌套在Column、Frame等容器内的),直接通过元素自身的key就能访问,无需通过容器层级链式调用。
错误原因
你之前写的window['column name']['-Toggle-']会报错,是因为window['column name']返回的是Column组件对象,它不支持下标访问(不能用['元素key']的方式嵌套取值),所以触发了TypeError: 'Column' object is not subscriptable。
正确代码示例
假设你的布局包含Column嵌套按钮:
import PySimpleGUI as sg # 定义Column内的布局 column_layout = [ [sg.Button(key="-Toggle-", image_filename="my_image.png", border_width=0, pad=(0,0), enable_events=True)] ] # 主布局 layout = [ [sg.Column(column_layout, key="-MY_COLUMN-")] ] window = sg.Window('My program', layout, size=(2700, 900), enable_close_attempted_event=True, resizable=True, finalize=True) while True: event, values = window.read() if event == sg.WIN_CLOSED: break # 直接通过按钮的key访问,无需关联Column if event == "-Toggle-": # 替换成你的图片更新逻辑 window['-Toggle-'].update(image_data=cf.encode_img_for_pysimplegui(fig)) window.close()
补充说明
只要你给元素设置了全局唯一的key,不管它嵌套在多少层容器(Column、Tab、Frame等)里,都可以直接用window[元素key]获取到元素实例,然后调用update()方法修改图片、文本等属性。
内容的提问来源于stack exchange,提问作者Bruce Iverson
相关产品推荐
相关产品推荐

