pysimplegui如何让列表和文本框同步滚动
时间: 2024-02-13 15:01:14 浏览: 169
要让列表和文本框同步滚动,可以使用`sg.Listbox`和`sg.Multiline`的scroll_to_index`方法。
首先,需要绑定列表和文本框的滚动事件。可以使用`sg.Listbox`的`enable_events`参数和`sg.Multiline`的`bind_return_key`参数来实现。
然后,在列表滚动事件和文本框滚动事件中,都调用`scroll_to_index`方法来滚动到指定的索引。
下面是一个示例代码:
```python
import PySimpleGUI as sg
layout = [
[sg.Listbox(['item ' + str(i) for i in range(100)], size=(20, 10), enable_events=True, key='-LIST-'),
sg.Multiline('', size=(40, 10), bind_return_key=True, key='-MULTI-')],
]
window = sg.Window('Sync Scrolling', layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event == '-LIST-':
# 获取列表当前选中项的索引
index = values['-LIST-'][0]
# 滚动文本框到相应的索引处
window['-MULTI-'].scroll_to_index(index)
elif event == '-MULTI-':
# 获取文本框当前光标所在行的索引
index = values['-MULTI-'].count('\n', 0, values['-MULTI-'].get_indexes()[0])
# 滚动列表框到相应的索引处
window['-LIST-'].scroll_to_index(index)
window.close()
```
在这个示例中,当用户在列表中选择一个项时,程序会自动将文本框滚动到相应的索引处。当用户在文本框中滚动时,程序会自动将列表框滚动到相应的索引处。这样,列表和文本框就实现了同步滚动。
阅读全文