PySimpleGUI设置指定主题不生效始终显示深色模式如何解决
PySimpleGUI 主题配置不生效始终显示深色模式修复方案
问题根因
- 主题名拼写错误:代码中写的
LightGrey1使用了英式拼写Grey,PySimpleGUI内置主题采用美式拼写规则,对应浅色主题的正确名称为LightGray1。传入不存在的主题名时,PySimpleGUI不会抛出报错,会自动回退加载默认的深色主题,这是显示异常的核心原因。 - 函数参数未生效:
create_window函数定义了theme入参,但内部完全没有使用该参数,直接硬编码了主题值,后续传入任何自定义主题名都不会实际生效。 - 配置缓存干扰:PySimpleGUI会在本地缓存上次运行的主题配置,如果之前运行过程序异常退出,缓存配置可能覆盖你显式设置的主题。
修复步骤
- 修正主题名拼写,将硬编码的错误主题名替换为正确名称,或直接使用传入的
theme参数实现动态主题切换 - 主题设置前可调用
sg.theme_reset()清空历史缓存配置,避免干扰 - 确保
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
相关产品推荐
相关产品推荐

