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

PySimpleGUI点击Reload按钮重新随机选择CSV中游戏的实现方法

修改后的可运行代码

import random
import csv
import PySimpleGUI as sg

# 封装随机选游戏的逻辑,方便重复调用
def get_random_game():
    with open("Retro Games Spreadsheet! - Games!.csv", encoding="utf-8") as f:
        reader = csv.reader(f)
        return random.choice(list(reader))

# 初始化选中的游戏
chosen_row = get_random_game()
print(chosen_row)

# 创建布局,给需要更新的Text控件加唯一key,方便后续定位修改
layout = [
    [sg.Text(chosen_row, key="-GAME_TEXT-")],
    [sg.Button("Reload")]
]

# 创建窗口
window = sg.Window("Select Random Game", layout)

# 事件循环
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    elif event == "Reload":
        # 重新调用方法随机选游戏
        new_game = get_random_game()
        # 更新文本控件的内容
        window["-GAME_TEXT-"].update(new_game)

window.close()

核心修改点

  • 把读取CSV、随机选游戏的逻辑封装成独立函数,点击Reload时可以重复调用获取新结果
  • 给展示游戏名称的sg.Text控件添加了唯一标识key="-GAME_TEXT-",PySimpleGUI中所有需要动态修改的控件都需要提前定义key方便定位
  • 修正了原代码中layout的语法错误,原代码的括号嵌套格式不符合要求
  • 删除了多余的f.close(),with open语法会在代码块执行结束后自动关闭文件
  • 删掉了无效的window.Refresh(),调用控件的update()方法后界面会自动刷新
  • 补充了文件读取的encoding参数,避免CSV包含中文时出现乱码,可根据自己文件的实际编码调整为gbk等其他值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:15:01