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

如何在PySimpleGUI中实现FileBrowse后自动切换RadioButton选项

解决PySimpleGUI文件选择后自动切换RadioButton的问题

你完全可以用Update方法实现这个需求,只需要做两处关键修改:

  1. 给FileBrowse组件添加key:没有key的话无法捕获用户选择文件的事件,所以给sg.FileBrowse加上key='FILE_BROWSE'参数。
  2. 在事件循环中处理文件选择事件:当用户通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:10:28