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

PySimpleGUI按钮需双击才生效:为何点击两次才能修改输入框背景色?

问题原因

你代码的问题出在事件循环里重复调用了两次window.read(),逻辑流程如下:

  • 程序进入循环后,第一次执行window.read(),此时你第一次点击按钮,这个方法会返回对应的按钮事件并赋值给event变量
  • 紧接着代码又执行了第二次window.read(),程序会直接阻塞在这里等待新的交互,你第一次点击的事件已经被读取但还没执行判断逻辑,程序就停在等你第二次操作的状态
  • 你第二次点击按钮后,第二次window.read()才返回,这时候程序才会走到后续的事件判断逻辑,用的是第一次点击时拿到的event值执行颜色修改,所以看起来要点击两次才生效
修正方案

删除多余的那一行window.read()即可,建议同时补充窗口关闭事件的处理,避免点击窗口关闭按钮时报错,修正后的代码如下:

import PySimpleGUI as sg

layout = [
    [sg.Input(s=(26, 1), background_color='red', k='Input')],
    [sg.Button('White', s=(10, 1)), sg.Button('Black', s=(10, 1))],
]

window = sg.Window('test', layout=layout, margins=(1, 1))

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    if event == 'White':
        window['Input'].update(background_color='white')
    if event == 'Black':
        window['Input'].update(background_color='black')
window.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:06:03