python - 为什么我必须双击才能真正做某事?

标签 python python-3.x pysimplegui

代码:

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()
    window.read()
    if event == 'White':
        window['Input'].update(background_color='white')
    if event == 'Black':
        window['Input'].update(background_color='black')

我做到了,当您按下按钮时,输入字段会改变它的颜色。

但为什么我必须按两次按钮才能真正改变它?

最佳答案

你的事件循环读取事件两次:

while True:
    event, values = window.read()
    window.read()

你只需要一次。

另外,您应该添加一个退出事件。

更新代码:

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')

关于python - 为什么我必须双击才能真正做某事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69326449/

相关文章:

python - 如何从kayak.com上抓取给定区域的酒店最低价格?

python - 如何在没有 python 中的整个文件的情况下有效地检测 XML 模式

python - 如何混合pandas和beautifulsoup从xml文件目录中提取一些元素标签?

python - 更新 PySimpleGUI 中的单选按钮

python - 如何在多种条件下编写Python三元运算符

Python 单元测试 : make nose show failed assertions values

python - pandas.read_sql 使用 SQLAlchemy 未提交读取

python - '|' 和 '<' 在 numpy 类型中意味着什么?

python-3.x - 如何在窗口中实时更新打印文本?

python - PysimpleGui - 国际象棋示例中关于 size=(1, 1) 和图像着色的混淆