如何删除extend_layout 新增行
时间: 2024-10-13 21:03:58 浏览: 23
Extend_sometimeqkd_Extend_
在PYSimpleGUI中,如果你想删除通过`extend_layout()`函数新增加的行,你需要先保存每一行的引用,因为`extend_layout()`不会返回一个新的布局,而是直接修改了原始布局。下面是删除特定行的一个示例:
```python
import PySimpleGUI as sg
# 初始化布局
layout = [[sg.Text('这是原始布局')]]
window = sg.Window('布局管理', layout)
def add_new_row(text):
# 添加新行并存储其引用
new_layout = [sg.Text(text)]
layout.extend(new_layout) # 使用extend_layout添加新行
window.update(layout) # 更新窗口显示新的布局
def remove_row(row_index):
# 删除指定行
if len(layout) > row_index + 1: # 验证索引是否有效
del layout[row_index] # 删除指定行
window.update(layout) # 更新窗口显示新的布局
# 示例:增加行并立即删除
add_new_row('第一行')
remove_row(0) # 删除刚才添加的第一行
# 现在可以创建一些事件驱动的操作
button1 = sg.Button('添加行', bind_return_key=True, key='ADD_ROW')
button2 = sg.Button('删除上一行', key='DELETE_ROW')
layout.append([button1, button2])
window Final = sg.Window('事件驱动', layout)
event, _ = window.Final.Read()
if event == 'ADD_ROW':
add_new_row('新添加行')
elif event == 'DELETE_ROW':
last_visible_row_index = len(window.Final)['-LAYOUT_CONTAINER-'] - 1 # 获取最后一个可见行的索引
if last_visible_row_index >= 0:
remove_row(last_visible_row_index)
window.Close()
```
在这个例子中,我们定义了两个函数:`add_new_row()`用于添加新行,`remove_row()`用于删除指定行。在事件循环中,当点击“删除上一行”按钮时,会找到最后一个可见行(即未被删除的最后一行),然后删除它。
阅读全文