pysimplegui如何让多个多行文本框同步滚动
时间: 2023-09-18 12:08:05 浏览: 110
要让多个多行文本框同步滚动,可以通过将它们的滚动事件绑定到同一个回调函数实现。
具体实现步骤如下:
1. 创建多个多行文本框对象,设置它们的大小、位置等属性。
2. 为每个多行文本框对象绑定一个滚动事件,当用户在其中一个多行文本框中滚动时,触发该多行文本框对象的滚动事件。
3. 在滚动事件的回调函数中,获取当前滚动的位置,然后将该位置设置到其他多行文本框对象中。
下面是一个简单的示例代码,可以实现两个多行文本框对象的同步滚动:
```
import PySimpleGUI as sg
# 创建两个多行文本框对象
text1 = sg.Multiline(size=(50, 10), key='text1', enable_events=True)
text2 = sg.Multiline(size=(50, 10), key='text2', enable_events=True)
# 将两个多行文本框对象放到布局中
layout = [
[text1, text2]
]
# 创建窗口对象
window = sg.Window('Sync Scrolling', layout)
# 定义滚动事件回调函数
def on_scroll(event, values):
if event == 'text1':
pos = values['text1']
window['text2'].update(scroll_to=pos)
elif event == 'text2':
pos = values['text2']
window['text1'].update(scroll_to=pos)
# 绑定滚动事件到回调函数
text1.bind('<MouseWheel>', on_scroll)
text2.bind('<MouseWheel>', on_scroll)
# 进入事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
window.close()
```
在上面的代码中,我们为每个多行文本框对象绑定了 `<MouseWheel>` 事件,当用户在其中一个多行文本框中滚动时,就会触发该多行文本框对象的滚动事件。在滚动事件的回调函数中,我们获取了当前滚动的位置,然后将该位置设置到其他多行文本框对象中,从而实现了多个多行文本框的同步滚动。
阅读全文