在PySimpleGUI输入框填入文本后如何自动将光标定位到文本末尾
解决方案
你可以通过在输入框的内容变更事件中调用控件的set_cursor_position方法实现光标自动定位到文本最右侧,具体实现逻辑如下:
你当前已经为输入框配置了enable_events=True参数,每次输入框内容变化时都会触发对应key的事件,不需要额外修改布局代码,只需要在事件循环中捕获输入框的事件,将光标位置设置为当前输入文本的总长度即可。
完整实现代码如下:
import PySimpleGUI as sg sg.theme('DarkAmber') lengthOfInputBar = 40 layout = [ [sg.Text(text='Valgrind Message .txt File Location'), sg.Input(default_text='', size=(lengthOfInputBar, 1), enable_events=True, key='-VALGRIND_OUTPUT_TXT_INP-'), sg.FileBrowse(file_types=[('TXT (*.txt)', '*.txt')])], [sg.Button('确定'), sg.Button('退出')] ] window = sg.Window('示例窗口', layout) while True: event, values = window.read() if event in (sg.WIN_CLOSED, '退出'): break # 处理输入框内容变更事件 if event == '-VALGRIND_OUTPUT_TXT_INP-': current_text = values['-VALGRIND_OUTPUT_TXT_INP-'] # 光标位置设置为文本长度,即文本最右侧 window['-VALGRIND_OUTPUT_TXT_INP-'].set_cursor_position(len(current_text)) window.close()
该方案同时兼容手动输入和通过FileBrowse选择文件自动填充内容的场景,两种场景下光标都会自动定位到文本末尾。
内容的提问来源于stack exchange,提问作者Arindam
相关产品推荐
相关产品推荐

