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

PySimpleGUI设置指定主题不生效始终显示深色模式如何解决

PySimpleGUI 主题配置不生效始终显示深色模式修复方案

问题根因

  • 主题名拼写错误:代码中写的LightGrey1使用了英式拼写Grey,PySimpleGUI内置主题采用美式拼写规则,对应浅色主题的正确名称为LightGray1。传入不存在的主题名时,PySimpleGUI不会抛出报错,会自动回退加载默认的深色主题,这是显示异常的核心原因。
  • 函数参数未生效:create_window函数定义了theme入参,但内部完全没有使用该参数,直接硬编码了主题值,后续传入任何自定义主题名都不会实际生效。
  • 配置缓存干扰:PySimpleGUI会在本地缓存上次运行的主题配置,如果之前运行过程序异常退出,缓存配置可能覆盖你显式设置的主题。

修复步骤

  1. 修正主题名拼写,将硬编码的错误主题名替换为正确名称,或直接使用传入的theme参数实现动态主题切换
  2. 主题设置前可调用sg.theme_reset()清空历史缓存配置,避免干扰
  3. 确保sg.theme()调用始终在所有GUI元素创建、Window实例初始化之前执行,顺序错误会导致主题配置不生效

修复后可运行代码

import PySimpleGUI as sg

def create_window(theme):
    # 清空缓存,重置为基础主题
    sg.theme_reset()
    # 使用传入的theme参数设置主题,替换硬编码错误值
    sg.theme(theme)
    sg.set_options(font= "Franklin 14", button_element_size = (6,3))
    button_size = (6,3)
    layout = [
        [sg.Text("output", font= "Franklin 26", justification= "right", expand_x= True, pad= (10,20))],
        [sg.Button(7, size= button_size), sg.Button(8, size= button_size), sg.Button(9, size= button_size), sg.Button("*", size= button_size)],
        [sg.Button(4, size= button_size), sg.Button(5, size= button_size), sg.Button(6, size= button_size), sg.Button("/", size= button_size)],
        [sg.Button(1, size= button_size), sg.Button(2, size= button_size), sg.Button(3, size= button_size), sg.Button("-", size= button_size)],
        [sg.Button(0, expand_x= True), sg.Button(".", size= button_size), sg.Button("+", size= button_size),],
    ]

    return sg.Window("Calculator", layout)

# 传入想要使用的主题名,注意使用Gray而非Grey的拼写
window = create_window("LightGray1")


while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break


window.close()

可选验证操作

如果需要确认当前使用的主题名是否正确,可以在sg.theme()调用后加一行print(sg.theme()),控制台会输出当前实际加载的主题名称,如果输出和你传入的不一致,说明主题名拼写错误或已被缓存覆盖。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:01:59