PySimpleGUI4.60.4版本,向table中添加一列为复选框
时间: 2023-05-25 14:06:11 浏览: 163
swing table加复选框
5星 · 资源好评率100%
您可以使用`sg.Checkbox()`函数在PySimpleGUI表格中添加复选框列。以下是一个示例实现:
```
import PySimpleGUI as sg
# 创建表格数据
data = [[1, 'John', 'Doe'],
[2, 'Jane', 'Smith'],
[3, 'Bob', 'Johnson']]
# 创建表格列名
header_list = ['ID', 'First Name', 'Last Name', 'Selected']
# 将复选框列添加到表格数据的每一行并设置为未选中状态
for row in data:
row.append(False)
# 创建表格布局
layout = [[sg.Table(values=data,
headings=header_list,
auto_size_columns=True,
col_widths=[10, 20, 20, 10],
num_rows=min(len(data), 20),
enable_events=True,
key='-TABLE-')]]
# 创建PySimpleGUI窗口
window = sg.Window('Table with Checkbox Column', layout)
# 事件循环
while True:
event, values = window.read()
# 退出条件
if event == sg.WIN_CLOSED:
break
# 点击表格中的复选框更新表格数据
if event == '-TABLE-':
row_index, col_index = values['-TABLE-']
if col_index == 3:
# 取消先前选中的单元格
for i, row in enumerate(data):
if i != row_index:
data[i][col_index] = False
# 切换当前行的选中状态
data[row_index][col_index] = not data[row_index][col_index]
# 更新表格显示
table = window['-TABLE-']
table.update(values=data)
# 关闭窗口
window.close()
```
在上述代码中,我们使用`for`循环将具有`False`值的新列附加到表格数据的每一行的末尾。表格布局中的`enable_events=True`属性会将单元格点击事件传递给事件循环。在该事件循环中,我们检查事件是否来自表格。如果是,我们检查单元格的列索引是否为复选框列的索引。如果是,则取消先前选中的单元格,并将当前行的复选框列标记为选中状态。最后,我们使用`update()`方法更新表格以显示新数据。
阅读全文