如何在PySimpleGUI中实现FileBrowse后自动切换RadioButton选项
你完全可以用Update方法实现这个需求,只需要做两处关键修改:
- 给FileBrowse组件添加key:没有key的话无法捕获用户选择文件的事件,所以给
sg.FileBrowse加上key='FILE_BROWSE'参数。 - 在事件循环中处理文件选择事件:当用户通过FileBrowse选中文件后,触发
FILE_BROWSE事件,此时调用window['R2'].Update(value=True)将第二个RadioButton设为选中状态(同一组的RadioButton会自动互斥,第一个会自动取消选中)。
修改后的完整代码如下:
import PySimpleGUI as sg from os.path import isfile, join, getctime import numpy as np checkboxes = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] type_2 = ( ("Files", "*.txt *.log"), ) layout = [[sg.Text('Welcome\n\n')], [sg.Radio('\tUse default file', "RADIO1", enable_events=True, key='R1', default=True)], [sg.Radio('\tUse specified file', "RADIO1", enable_events=True, key='R2', default=False)], # 给FileBrowse添加key以捕获事件 [sg.Text("Choose a file: "), sg.FileBrowse(file_types=type_2, key='FILE_BROWSE')], [sg.Checkbox('\t '+checkboxes[0], default=True)], [sg.Checkbox('\t '+checkboxes[1], default=True)], [sg.Checkbox('\t '+checkboxes[2], default=True)], [sg.Checkbox('\t '+checkboxes[3], default=True)], [sg.Checkbox('\t '+checkboxes[4], default=True)], [sg.Checkbox('\t '+checkboxes[5], default=True)], [sg.Checkbox('\t '+checkboxes[6], default=True)], [sg.Button('Go')], [sg.Button('Cancel')]] window = sg.Window(title="A Title", layout=layout, margins=(150,40)) while True: event, values = window.read() if event == 'Cancel' or event == sg.WIN_CLOSED: break # 处理文件选择事件,自动切换到指定文件选项 if event == 'FILE_BROWSE': window['R2'].Update(value=True) if event == 'Go': break window.close()
另外调整了原代码中quit()的位置——先退出循环再关闭窗口更符合PySimpleGUI的规范,避免不必要的资源占用。
内容的提问来源于stack exchange,提问作者dcpetit
相关产品推荐
相关产品推荐

