Python 3.x 根据另一个复选框的选定值更新复选框

Python 3.x 根据另一个复选框的选定值更新复选框,python-3.x,pysimplegui,Python 3.x,Pysimplegui,我想在PySimpleGUI中有一个全选复选框。选中“全选”复选框时,所有其他复选框应更改为True,如果未选中任何其他复选框,则“全选”复选框应更改为false状态 我可以通过点击按钮来完成,但是我找不到一种方法来根据在另一个复选框中选择的值更新复选框 import PySimpleGUI as sg layout = [ [sg.Checkbox ('select all', key = 'checkbox')], [sg.Checkbox ('value 1', key='

我想在PySimpleGUI中有一个全选复选框。选中“全选”复选框时,所有其他复选框应更改为True,如果未选中任何其他复选框,则“全选”复选框应更改为false状态

我可以通过点击按钮来完成,但是我找不到一种方法来根据在另一个复选框中选择的值更新复选框

import PySimpleGUI as sg
layout = [
    [sg.Checkbox ('select all', key = 'checkbox')],
    [sg.Checkbox ('value 1', key='check_value1')],
    [sg.Checkbox ('value 2',key='check_value2')],
    [sg.Button ('ON', key = 'ON')],
    [sg.Button ('OFF', key = 'OFF')]
]
window = sg.Window ('Sample GUI', layout) .Finalize ()
while True: # Event Loop
    event,values=window.read()
    if event in (None, 'Exit'):
        break
    elif event == 'ON':
        window ['checkbox']. Update (value = True)
    elif event == 'OFF':
        window ['checkbox']. Update (value = False)
    print(event,values)
window.close ()
有没有办法实现这一点?

更新方法值开关参数。 在下面的示例中,如果按“开”按钮,将输入一个检查,如果按“关”按钮,将删除该检查

import PySimpleGUI as sg
from PySimpleGUI import Checkbox, Button
layout = [
    [sg.Checkbox ('checkbox', key = 'checkbox')],
    [sg.Button ('ON', key = 'ON')],
    [sg.Button ('OFF', key = 'OFF')]
]
window = sg.Window ('Sample GUI', layout) .Finalize ()
while True: # Event Loop
    event, values ​​= window.read (timeout = 100)
    if event in (None, 'Exit'):
        break
    elif event == 'ON':
        window ['checkbox']. Update (value = True)
    elif event == 'OFF':
        window ['checkbox']. Update (value = False)
window.close ()
有关更多信息,您还可以参考本文档更新方法值开关参数。 在下面的示例中,如果按“开”按钮,将输入一个检查,如果按“关”按钮,将删除该检查

import PySimpleGUI as sg
from PySimpleGUI import Checkbox, Button
layout = [
    [sg.Checkbox ('checkbox', key = 'checkbox')],
    [sg.Button ('ON', key = 'ON')],
    [sg.Button ('OFF', key = 'OFF')]
]
window = sg.Window ('Sample GUI', layout) .Finalize ()
while True: # Event Loop
    event, values ​​= window.read (timeout = 100)
    if event in (None, 'Exit'):
        break
    elif event == 'ON':
        window ['checkbox']. Update (value = True)
    elif event == 'OFF':
        window ['checkbox']. Update (value = False)
window.close ()
有关更多信息,您还可以参考此文档,方法升级中的选项值或第一个参数如果True选中复选框,则False将其清除

演示代码

将PySimpleGUI导入为sg sg.主题为“暗蓝色” 布局=[ [sg.复选框'All checked',enable_events=True,key='Check_All', sg.Checkbox'All unchecked',enable_events=True,key='Uncheck_All'], [sg.水平分离器]]+[ [sg.Checkboxf'check{j},{i}',enable_events=True,key=f'check{j}{i}' 对于范围5中的i]对于范围4中的j ] window=sg。window'Sample GUI',layout,finalize=True while True:事件循环 事件,值=窗口。读取超时=100 如果事件==sg.WINDOW\u关闭: 打破 elif事件==“全部检查”: 对于范围4中的j: 对于范围5中的i: 窗口[f'check{j}{i}].updateRue 窗口['Uncheck_All'].updateValse elif事件=='取消选中所有': 对于范围4中的j: 对于范围5中的i: 窗口[f'check{j}{i}].updateValse 窗口['Check_All'].updateValse elif事件。使用“检查”启动: 如果不是值[事件]: 窗口['Check_All'].updateValse 其他: 窗口['Uncheck_All'].updateValse 窗户关上 选项值或方法升级中的第一个参数如果为True,则选中复选框,如果为False,则清除复选框

演示代码

将PySimpleGUI导入为sg sg.主题为“暗蓝色” 布局=[ [sg.复选框'All checked',enable_events=True,key='Check_All', sg.Checkbox'All unchecked',enable_events=True,key='Uncheck_All'], [sg.水平分离器]]+[ [sg.Checkboxf'check{j},{i}',enable_events=True,key=f'check{j}{i}' 对于范围5中的i]对于范围4中的j ] window=sg。window'Sample GUI',layout,finalize=True while True:事件循环 事件,值=窗口。读取超时=100 如果事件==sg.WINDOW\u关闭: 打破 elif事件==“全部检查”: 对于范围4中的j: 对于范围5中的i: 窗口[f'check{j}{i}].updateRue 窗口['Uncheck_All'].updateValse elif事件=='取消选中所有': 对于范围4中的j: 对于范围5中的i: 窗口[f'check{j}{i}].updateValse 窗口['Check_All'].updateValse elif事件。使用“检查”启动: 如果不是值[事件]: 窗口['Check_All'].updateValse 其他: 窗口['Uncheck_All'].updateValse 窗户关上
我也在使用cookbook中的代码。在这里,复选框的值在按钮事件中被更改。我要求在示例代码中选中SelectAll复选框时,还应选中值1和值2复选框。如果未选中值1或值2,则选择“全部”也应未选中。一旦看到文档,或者您可以参考我也在使用cookbook中的代码。在这里,复选框的值在按钮事件中被更改。我要求在示例代码中选中SelectAll复选框时,还应选中值1和值2复选框。如果未选中值1或值2,则“全选”也应未选中。一旦看到文档或您可以引用,可以使用元组作为键,而不是字符串。key=i,j?values变量具有复选框值,如果使用值字典而不是window[key]。get,则该变量将保存查找和调用以获取。不过这仍然是一个很好的答案。是的,窗口[event]。现在通过值[event]进行更新。可能对键使用元组而不是字符串。key=i,j?values变量具有复选框值,如果使用值字典而不是window[key]。get,则该变量将保存查找和调用以获取。不过这仍然是一个很好的答案。是的,窗口[event]。立即通过值[event]进行更新。