我想在我的 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 ()
有什么方法可以实现吗?
选项
value
或方法中的第一个参数 update
如果 True 选中复选框,False 清除它,
演示代码,
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 ()
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