PySimpleGUI4.60.4版本,设置table中的一列为复选框
时间: 2023-05-25 11:06:14 浏览: 165
dbgridEh,列中可以有复选框
在PySimpleGUI的Table中设置一列为复选框,可以使用列元素的`enable_events`和`key`参数来实现。具体步骤如下:
1. 创建一个包含复选框的表格列表。例如:
```
import PySimpleGUI as sg
data = [['John', 28, True],
['Jane', 35, False],
['Bob', 42, True]]
table = sg.Table(values=data,
headings=['Name', 'Age', 'Selected'],
display_row_numbers=False,
auto_size_columns=False,
col_widths=[10, 5, 10],
enable_events=True,
key='-TABLE-',
select_mode=sg.TABLE_SELECT_MODE_EXTENDED)
```
2. 在表格的`headings`参数中把要设置为复选框的那一列的标题名改为一个空字符串,因为表格的标题与每一列的元素一一对应。例如,如果要把`Selected`列设置为复选框,将`headings`参数改为`['Name', 'Age', '']`。
3. 在表格的`values`参数中,把要设置为复选框的那一列的元素改为布尔类型,并且第二个参数(在这个例子中是年龄)留空。例如,把`data`变为以下格式:
```
data = [['John', '', True],
['Jane', '', False],
['Bob', '', True]]
```
4. 在处理表格的事件时,可以使用`event`和`values`字典来获取用户的选择。例如:
```
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
if event == '-TABLE-':
selections = [row for row in values['-TABLE-'] if row[2]]
print('Selected rows:', selections)
```
在这个例子中,遍历每一行,如果第三个元素为True,就把这一行的所有元素添加到`selections`列表中。这样就可以获取用户选中的行了。
完整的示例代码:
```
import PySimpleGUI as sg
data = [['John', '', True],
['Jane', '', False],
['Bob', '', True]]
table = sg.Table(values=data,
headings=['Name', 'Age', ''],
display_row_numbers=False,
auto_size_columns=False,
col_widths=[10, 5, 10],
enable_events=True,
key='-TABLE-',
select_mode=sg.TABLE_SELECT_MODE_EXTENDED)
layout = [[table]]
window = sg.Window('Table with Checkboxes', layout)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
if event == '-TABLE-':
selections = [row for row in values['-TABLE-'] if row[2]]
print('Selected rows:', selections)
window.close()
```
阅读全文