如何解决PySimpleGUI:在多行小部件中设置和获取光标位置?
有没有办法在 PySimpleGUI 的多行小部件中获取光标的位置,存储它并将光标再次放回到该小部件文本中的定义位置?
您可以在下面看到我到目前为止编写的代码。我的目标是,当在上方窗口中输入“jk”时,光标会向下移动到输入行(有效)。用户可以在那里编写命令并完成输入(我还没有完成)。
现在的问题是如何让光标在上面的窗口跳回到原来的位置?!
import PySimpleGUI as sg
layout = [ [sg.Multiline(key = 'editor',size = (50,10),focus = True,enable_events = True)],[sg.InputText(key ='command',size = (45,1),),],]
window = sg.Window('editor',layout)
while True:
event,values = window.read()
if 'jk' in values['editor']:
# delete jk and jump down in the command line #
window['editor'].update(values['editor'].replace('jk',''))
window.Element('command').SetFocus(force = True)
if event in ('Close Window',None):
break
window.close()
感谢任何帮助,因为没有关于在 PySimpleGui 中设置或获取光标位置的文档。提前致谢!
解决方法
此处需要 Tkinter 代码
示例代码展示了它是如何工作的,“jk”从“M1”跳转到“M2”,键从“M2”跳回到“M1”。
import PySimpleGUI as sg
sg.theme("DarkBlue")
sg.set_options(font=('Courier New',16))
layout = [
[sg.Multiline('',size=(40,5),enable_events=True,key='M1')],[sg.Multiline('',key='M2')],]
window = sg.Window("Title",layout,finalize=True)
m1,m2 = window["M1"],window['M2']
m2.bind("<Return>","_Return")
while True:
event,values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == "M1" and 'jk' in values["M1"]:
m1.Widget.delete("insert-2c","insert")
m2.set_focus()
elif event == "M2_Return":
m1.set_focus()
print(event,values)
window.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。