根据另一个复选框的选定值更新复选框

问题描述 投票:0回答:2

我想在我的 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 ()

有什么方法可以实现吗?

python-3.x pysimplegui
2个回答
3
投票

选项

value
或方法中的第一个参数
update
如果 True 选中复选框,False 清除它,

演示代码,

enter image description here

import PySimpleGUI as sg

sg.theme('DarkBlue')

layout = [
    [sg.Checkbox('All checked',   enable_events=True, key='Check_All'),
     sg.Checkbox('All unchecked', enable_events=True, key='Uncheck_All')],
    [sg.HorizontalSeparator()]] + [
    [sg.Checkbox(f'check ({j}, {i})', enable_events=True, key=f'check{j}{i}')
        for i in range(5)] for j in range(4)
]

window = sg.Window ('Sample GUI', layout, finalize=True)

while True: # Event Loop
    event, values = window.read (timeout = 100)
    if event == sg.WINDOW_CLOSED:
        break
    elif event == 'Check_All':
        for j in range(4):
            for i in range(5):
                window[f'check{j}{i}'].update(True)
        window['Uncheck_All'].update(False)
    elif event == 'Uncheck_All':
        for j in range(4):
            for i in range(5):
                window[f'check{j}{i}'].update(False)
        window['Check_All'].update(False)
    elif event.startswith('check'):
        if not values[event]:
            window['Check_All'].update(False)
        else:
            window['Uncheck_All'].update(False)

window.close ()

2
投票

Update方法的Value切换参数。 在下面的示例中,如果按 ON 按钮,则会输入勾选,如果按 OFF 按钮,则会删除勾选。

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

有关更多信息,您也可以参考此文档https://pysimplegui.readthedocs.io/en/latest/call%20reference/#checkbox-element

© www.soinside.com 2019 - 2024. All rights reserved.